大数据分析案例-基于LinearRegression回归算法构建房屋价格预测模型

🤵‍♂️ 个人主页:@艾派森的个人主页

✍🏻作者简介:Python学习者
🐋 希望大家多多支持,我们一起进步!😄
如果文章对你有帮助的话,
欢迎评论 💬点赞👍🏻 收藏 📂加关注+


喜欢大数据分析项目的小伙伴,希望可以多多支持该系列的其他文章

大数据分析案例合集
大数据分析案例-基于随机森林算法预测人类预期寿命
大数据分析案例-基于随机森林算法的商品评价情感分析
大数据分析案例-用RFM模型对客户价值分析(聚类)
大数据分析案例-对电信客户流失分析预警预测
大数据分析案例-基于随机森林模型对北京房价进行预测
大数据分析案例-基于RFM模型对电商客户价值分析
大数据分析案例-基于逻辑回归算法构建垃圾邮件分类器模型
大数据分析案例-基于决策树算法构建员工离职预测模型

大数据分析案例-基于KNN算法对茅台股票进行预测

大数据分析案例-基于多元线性回归算法构建广告投放收益模型
大数据分析案例-基于随机森林算法构建返乡人群预测模型
大数据分析案例-基于决策树算法构建金融反欺诈分类模型

目录

1.项目背景

2.项目简介

2.1项目说明

2.2数据说明

2.3技术工具

3.算法原理

4.项目实施步骤

4.1理解数据

4.2数据预处理

4.3探索性数据分析

4.4特征工程

4.5模型构建

4.6模型评估

5.实验总结

源代码


1.项目背景

        随着经济的发展和城市化进程的加速,房地产市场日益繁荣,房屋价格的波动不仅关系到千家万户的财产安全,也对整个社会经济稳定产生重要影响。因此,准确预测房屋价格的变化趋势,对于政府制定房地产政策、投资者决策以及消费者购房计划都具有重要的参考价值。

        近年来,机器学习技术取得了长足的发展,为房屋价格预测提供了新的解决思路。基于机器学习算法的房屋价格预测模型,能够通过学习历史数据中的潜在规律,实现对未来房屋价格的预测。在众多机器学习算法中,LinearRegression(线性回归)是一种基础且广泛应用的算法,它通过建立自变量与因变量之间的线性关系,实现对因变量的预测。

研究背景:

  1. 房地产市场的波动性:受到宏观经济、政策调控、供需关系等多种因素的影响,房地产市场呈现出高度的波动性和不确定性。这使得传统的经济学模型在预测房屋价格时面临诸多挑战。而机器学习算法具有较强的自适应能力和学习能力,能够从历史数据中挖掘出复杂的非线性关系,为房屋价格预测提供更准确的依据。
  2. 数据驱动的决策支持:在大数据时代,数据已经成为推动社会发展的重要驱动力。对于房地产市场而言,海量的数据包含了丰富的信息,如房屋的位置、面积、建造年份、周边环境等。通过机器学习算法对这些数据进行深度挖掘和分析,可以为政府、企业和个人提供更加科学、精准的决策支持。
  3. 线性回归算法的优势:LinearRegression算法作为一种经典的回归分析方法,具有原理简单、计算高效、易于实现等优点。它能够根据自变量与因变量之间的线性关系,构建一个具有预测功能的数学模型。在实际应用中,LinearRegression算法往往能够取得较好的预测效果,并且在处理大规模数据时具有较高的计算效率。

研究意义:

        基于LinearRegression回归算法构建房屋价格预测模型,不仅有助于提高房屋价格预测的准确性和时效性,还可以为政府、企业和个人提供更加科学、合理的决策依据。具体来说,该研究的意义体现在以下几个方面:

  1. 政府决策支持:通过房屋价格预测模型,政府可以更加准确地把握房地产市场的运行态势,为制定和调整房地产政策提供科学依据,从而维护房地产市场的健康稳定发展。
  2. 企业投资决策:对于房地产企业而言,准确的房屋价格预测有助于企业把握市场机遇,规避市场风险,制定合理的投资策略和营销策略,提高企业的经济效益。
  3. 个人购房指导:对于广大购房者来说,房屋价格预测模型可以帮助他们更加理性地看待房地产市场波动,合理规划购房预算和购房时机,降低购房风险。

2.项目简介

2.1项目说明

        本实验旨在通过使用线性回归算法,基于历史房屋销售数据,构建一个房屋价格预测模型。通过分析房屋价格与各种特征之间的线性关系,我们可以更好地理解这些影响因素对房屋价格的影响程度,并为未来的房地产市场提供更准确的价格预测。通过这个实验,我们可以深入了解线性回归在房地产领域的应用,为相关领域的从业人员和决策者提供有益的参考。此外,我们还将评估模型的性能,并讨论可能的改进和进一步研究方向。这将有助于推动机器学习在房地产领域的应用和发展。

2.2数据说明

        本数据集来源于Kaggle,原始数据共有50000条,6列,各变量含义解释如下:

SquareFeet:房子的平方英尺。

Bedrooms:卧室的数量。

Bathrooms:卫生间的数量。

Neighborhood:房子所在的区域。

YearBuilt:哪一年建造的。

Price:房屋的价格。

2.3技术工具

Python版本:3.9

代码编辑器:jupyter notebook

3.算法原理

        线性回归是一个主要影响因素作为自变量来解释因变量的变化,在现实问题研究中,因变量的变化往往受几个重要因素的影响,此时就需要用两个或两个以上的影响因素作为自变量来解释因变量的变化,这就是多元回归亦称多重回归。当多个自变量与因变量之间是线性关系时,所进行的回归分析就是多元线性回归。  设y为因变量X1,X2…Xk为自变量,并且自变量与因变量之间为线性关系时,则多元线性回归模型为:

        Y=b0+b1x1+…+bkxk+e

        其中,b0常数项b1,b2…bk回归系数b1X1,X2…Xk固定时,x1每增加一个单位对y的效应,即x1y偏回归系数;同理b2X1,X2…Xk固定时,x2每增加一个单位对y的效应,即,x2y的偏回归系数,等等。如果两个自变量x1,x2同一个因变量y呈线相关时,可用二元线性回归模型描述为:

        y=b0 +b1x1 +b2x2 +e

        建立多元线性回归模型时,为了保证回归模型具有优良的解释能力和预测效果,应首先注意自变量的选择,其准则是:

(1)自变量对因变量必须有显著的影响,并呈密切的线性相关

(2)自变量与因变量之间的线性相关必须是真实的,而不是形式上的;

(3)自变量之间应具有一定的互斥性,即自变量之间的相关程度不应高于自变量与因变量之间的相关程度;

(4)自变量应具有完整的统计数据,其预测值容易确定。

4.项目实施步骤

4.1理解数据

首先导入常用的第三方库并加载数据

查看数据大小

查看数据基本信息

查看描述性统计

从结果中我们看到价格列中最小值为负值,存在异常值,后面需要处理

4.2数据预处理

查看缺失值情况

发现没有缺失值不需要处理

查看重复值情况

发现结果为False,说明不存在重复值,不需要处理

查看异常数据

剔除异常数据

4.3探索性数据分析

我们可以看到平方英尺面积和价格之间呈正相关关系。

农村、郊区和城市数据的价格分布是相等的。

上图遵循高斯分布 中位数价格为225052.14 

农村、郊区和城市数据比例几乎是一样的。

我们可以看到,邻域和建造年份没有太大的关系

4.4特征工程

准备建模的数据,并拆分数据集为训练集和测试集

数据标准化处理

  

4.5模型构建

初始化模型

自定义一个评估模型的函数

构建模型

 

4.6模型评估

可以发现线性回归模型的准确率是最高的

5.实验总结

        本实验通过应用线性回归算法构建了一个房屋价格预测模型,旨在通过各种特征变量对房屋价格进行建模和预测。以下是实验的主要总结点:

  1. 数据收集和预处理: 首先,我们收集了包含房屋价格和各种特征的数据集,确保数据的完整性和质量。在数据预处理阶段,进行了清洗、缺失值处理和特征选择,以确保输入数据的质量。

  2. 模型构建: 采用线性回归算法建立了房屋价格预测模型。该模型基于线性关系,通过训练数据拟合出最佳的权重系数,以最小化预测值与实际值之间的差异。

  3. 模型评估: 使用评价指标如均方误差(MSE)、R^2分数等对模型进行了评估。评估结果对模型的准确性和泛化能力进行了全面的分析,以确保模型能够在新数据上进行可靠的预测。

  4. 应用前景: 通过构建房屋价格预测模型,我们为房地产市场相关的决策提供了一个有力的工具。该模型不仅可以帮助买家和卖家更好地了解市场趋势,还可以为投资者和开发商提供决策支持,优化房地产资产的配置。

  5. 局限性和未来工作: 实验中可能存在一些局限性,比如模型对非线性关系的适应性较差。未来的工作可以探索更复杂的模型,考虑更多特征或采用其他机器学习算法,以提高预测性能。

        综合而言,通过本实验,我们成功构建了一个基于线性回归的房屋价格预测模型,并为房地产市场相关的决策提供了有益的信息。模型的建立和评估过程为未来类似问题的研究提供了有力的参考和指导。

心得与体会:

通过这次Python项目实战,我学到了许多新的知识,这是一个让我把书本上的理论知识运用于实践中的好机会。原先,学的时候感叹学的资料太难懂,此刻想来,有些其实并不难,关键在于理解。

在这次实战中还锻炼了我其他方面的潜力,提高了我的综合素质。首先,它锻炼了我做项目的潜力,提高了独立思考问题、自我动手操作的潜力,在工作的过程中,复习了以前学习过的知识,并掌握了一些应用知识的技巧等

在此次实战中,我还学会了下面几点工作学习心态:

1)继续学习,不断提升理论涵养。在信息时代,学习是不断地汲取新信息,获得事业进步的动力。作为一名青年学子更就应把学习作为持续工作用心性的重要途径。走上工作岗位后,我会用心响应单位号召,结合工作实际,不断学习理论、业务知识和社会知识,用先进的理论武装头脑,用精良的业务知识提升潜力,以广博的社会知识拓展视野。

2)努力实践,自觉进行主角转化。只有将理论付诸于实践才能实现理论自身的价值,也只有将理论付诸于实践才能使理论得以检验。同样,一个人的价值也是透过实践活动来实现的,也只有透过实践才能锻炼人的品质,彰显人的意志。

3)提高工作用心性和主动性。实习,是开端也是结束。展此刻自我面前的是一片任自我驰骋的沃土,也分明感受到了沉甸甸的职责。在今后的工作和生活中,我将继续学习,深入实践,不断提升自我,努力创造业绩,继续创造更多的价值。

这次Python实战不仅仅使我学到了知识,丰富了经验。也帮忙我缩小了实践和理论的差距。在未来的工作中我会把学到的理论知识和实践经验不断的应用到实际工作中,为实现理想而努力。

源代码

SquareFeet:房子的平方英尺。
Bedrooms:卧室的数量。
Bathrooms:卫生间的数量。
Neighborhood:房子所在的区域。
YearBuilt:哪一年建造的。
Price:房屋的价格。
import pandas as pd
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
import seaborn as sns
import plotly.express as px
%matplotlib inline
import warnings
warnings.filterwarnings('ignore')

df = pd.read_csv('housing_price_dataset.csv')
df.head()
df.shape
df.info()
df.describe()
df.isnull().sum() # 统计缺失数据
any(df.duplicated())  # 检验是否存在重复数据
df[df['Price']<=0] # 异常数据
df = df[df['Price']>=0]  # 剔除价格为负数的异常数据
df.shape
# 房屋大小与价格的关系
sns.scatterplot(data=df, x='SquareFeet',y='Price')
plt.show()
我们可以看到平方英尺面积和价格之间呈正相关关系。
# 不同区域的房屋价格关系
sns.scatterplot(data=df, x='SquareFeet',y='Price',hue='Neighborhood')
plt.show()
# 不同区域的房屋价格情况
sns.barplot(data=df, x='Neighborhood',y='Price',hue='Neighborhood')
plt.legend(loc=10)
plt.show()
农村、郊区和城市数据的价格分布是相等的。
# 价格分布情况
sns.histplot(data=df,x='Price');
median = np.median(df['Price'])
print(f'{median:.2f} is the Median Price.')
plt.show()
上图遵循高斯分布
中位数价格为225052.14
# 不同区域的比例情况
plt.pie(df["Neighborhood"].value_counts(), labels=df["Neighborhood"].value_counts().index, autopct='%1.1f%%', startangle=90)
plt.title('Distribution of Neighborhoods')
plt.show()
农村、郊区和城市数据比例几乎是一样的。
# 相关系数分析
neighbourhood_codes = {'Rural':0,'Suburb':1,'Urbun':2} # 编码处理
mapping = df['Neighborhood'].map(neighbourhood_codes)
df['Price'].corr(mapping)
plt.figure(figsize=(8,6))
sns.heatmap(df[df.select_dtypes(include=np.number).columns.to_list()].corr(), annot=True);
我们可以看到,邻域和建造年份没有太大的关系
# 准备建模数据
X = df.drop(columns = ["Price", "Neighborhood", "YearBuilt"], axis = 1)
y = df["Price"]
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 42)
print(X_train.shape[0])
print(X_test.shape[0])
# 数据标准化处理
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
# 初始化模型
from sklearn.linear_model import LinearRegression, ElasticNet
from sklearn.svm import SVR
from sklearn.tree import DecisionTreeRegressor
from sklearn.ensemble import RandomForestRegressor, AdaBoostRegressor
from sklearn.neighbors import KNeighborsRegressor
import xgboost as xb
models = {
    "Linear Regreesion": LinearRegression(),
    "ElasticNet": ElasticNet(),
    "Support Vector Regressor": SVR(),
    "Decison Tree Regressor": DecisionTreeRegressor(),
    "Random Forest Regressor": RandomForestRegressor(),
    "Ada Boost Regressor": AdaBoostRegressor(),
    "XG Boost Regressor": xb.XGBRegressor(),
    "K Neighbors Regressor": KNeighborsRegressor()
}
from sklearn.metrics import r2_score, mean_squared_error, mean_absolute_error
# 自定义一个评估模型的函数
def evaluate_model(X_train, X_test, y_train, y_test, models):
    report = {}
    for i in range(len(models)):
        model = list(models.values())[i]
        model.fit(X_train, y_train)
        y_pred = model.predict(X_test)
        
        r2score = r2_score(y_test, y_pred)
        mse = mean_squared_error(y_test, y_pred)
        mae = mean_absolute_error(y_test, y_pred)

        report[list(models.keys())[i]] = {
            "R2 SCORE": r2score,
            "MEAN SQUARED ERROR": mse,
            "MEAN ABSOLUTE ERROR": mae
        }
        
    return report
model_matrics = evaluate_model(X_train, X_test, y_train, y_test, models)
for model, metrics in model_matrics.items():
    print(f"{model} Metrics:")
    print(f"  Accuracy: {metrics['R2 SCORE']}")
    print(f"  Mean Squared Error: {metrics['MEAN SQUARED ERROR']}")
    print(f"  Mean Absolute Error: {metrics['MEAN ABSOLUTE ERROR']}")
    print("\n" + "=" * 30 + "\n")
# 打印出准确率最高的模型及其准确率
max_accuracy_model = max(model_matrics, key=lambda k: model_matrics[k]['R2 SCORE'])
max_accuracy_value = model_matrics[max_accuracy_model]['R2 SCORE']
print(f"The model with the highest accuracy is '{max_accuracy_model}' with an accuracy of {max_accuracy_value}.")
# 模型效果可视化
best_model = LinearRegression()
best_model.fit(X_train, y_train)
y_test_pred = best_model.predict(X_test)
y_train_pred = best_model.predict(X_train)

plt.figure(figsize=(8, 6))
plt.scatter(y_train, y_train_pred, color='red', label='Train', alpha=0.5)
plt.scatter(y_test, y_test_pred, color='blue', label='Test', alpha=0.5)
plt.plot(y_train, y_train, color='green', linestyle='--', label='Ideal')
plt.xlabel('Actual Prices')
plt.ylabel('Predicted Prices')
plt.title('Scatter Plot: Actual Prices vs. Predicted Prices')
plt.legend()
plt.grid(True)
plt.show()
plt.figure(figsize=(10,6))  
y_pred = best_model.predict(X_test)
plt.plot(range(len(y_test))[:200],y_pred[:200],'b',label='predict')
plt.plot(range(len(y_test))[:200],y_test[:200],'r',label='true')
plt.legend(loc='upper right',fontsize=15)
plt.xlabel('the number of house',fontdict={'weight': 'normal', 'size': 15})
plt.ylabel('value of Price',fontdict={'weight': 'normal', 'size': 15})
plt.show()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/302592.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Centos7 MongoDB安装

基础配置&#xff08;Centos7.5镜像&#xff0c;2核2GB内存&#xff0c;50GB硬盘&#xff09; 主机名IPmongodb192.168.100.124 &#xff08;在MongoDB官网有linux安装MongoDB的步骤&#xff09; &#xff08;1&#xff09;配置yum源 [rootmongodb ~]# cat /etc/yum.repos.d…

24/1/8

传奇登录界面&#xff1b; #include "widget.h"Widget::Widget(QWidget *parent): QWidget(parent) {//窗口设置this->setWindowTitle("传奇");//窗口名this->setWindowIcon(QIcon("C:\\Users\\21528\\Desktop\\图标.png"));//窗口图标th…

用MATLAB求最短路径(graphshortestpath)和求最小生成树(minspantree),代码演示

求最短路径&#xff08;graphshortestpath&#xff09;&#xff0c;求最小生成树&#xff08;minspantree&#xff09; 文章目录 求最短路径&#xff08;graphshortestpath&#xff09;&#xff0c;求最小生成树&#xff08;minspantree&#xff09;1、最短路径问题2、最小生成…

Linux文件系统与日志管理

目录 一、Linux文件系统 1、inode 与 block 详解 1.1 inode 和 block 概述 1.2 inode表的内容 1.3 查看文件的inode号码 1.4 模拟innode号耗尽故障处理 2、访问文件的流程 3、文件恢复 3.1 恢复误删除的ext3格式文件 3.2 恢复误删除的 xfs 格式文件 二、Linux日志…

Java集合框架深度解析:HashMap

Java中的HashMap是一种基于哈希表的实现&#xff0c;提供了快速的查找性能。在这篇深度解析中&#xff0c;我们将深入探讨HashMap**的实现原理、适用场景、潜在问题以及并发控制策略。 1. HashMap的实现原理 1.1 哈希表 HashMap内部基于哈希表实现&#xff0c;通过散列函数将…

如何下载YouTube上的Mobile ALOHA视频?不用安装任何软件,一分钟搞定,一些好用的小技能又增加了^_^

一、背景 最近几天被斯坦福大学的移动双臂机器人——Mobile ALOHA刷屏了&#xff0c;就是下面这款能做饭&#xff0c;能收拾家务的机器人。因为是斯坦福大学研发的&#xff0c;他们的许多demo都上传到了国外的视频网站YouTube上面&#xff0c;为了防止未来的某天梯子不好用&am…

数据结构-测试5

一、判断题 1.二叉树只能用二叉链表表示&#xff08;F&#xff09; 二叉树的存储结构有两种&#xff0c;顺序存储结构和链式存储结构 2. 装填因子是散列表的一个重要参数&#xff0c;它反映散列表的装满程度。(T) 装填因子越小&#xff0c;发生冲突的可能性越小 3. 在任何情况…

CSS 发光输入框动画

<template><view class="content"><input placeholder="请输入..." class="input" /> </view> </template><script></script><style>/* 设置整个页面的背景颜色为 #212121 */body{background-c…

数据结构与算法(九)图链式存储

邻接表 度&#xff1a;无向图的度&#xff1a;顶点与邻接点连接的边就做度。有向图的度&#xff1a;指向顶点的边叫做入度&#xff0c;由顶点指向其他邻接点的边叫做出度 顶点&#xff1a;存储自身顶点信息和指向下一个临界点的指针 邻接点&#xff1a;保存临接点的存储下标…

基于海洋捕食者算法优化的Elman神经网络数据预测 - 附代码

基于海洋捕食者算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于海洋捕食者算法优化的Elman神经网络数据预测 - 附代码1.Elman 神经网络结构2.Elman 神经用络学习过程3.电力负荷预测概述3.1 模型建立 4.基于海洋捕食者优化的Elman网络5.测试结果6.参考文献7.Matlab代码…

mysql索引失效的情况

目录 1破坏最左前缀法则2在索引列上做任何计算、函数操作&#xff0c;会导致索引失效而转向全表扫描。3存储引擎不能使用索引中范围条件右边的列4Mysql在使用不等于时无法使用索引会导致全表查询5is null可以使用索引&#xff0c;但是is not null无法使用索引6like以通配符开头…

网络调试 UDP1,开发板用动态地址-入门6

https://www.bilibili.com/video/BV1zx411d7eC?p11&vd_source109fb20ee1f39e5212cd7a443a0286c5 1, 开发板连接路由器 1.1&#xff0c;烧录无OS UDP例程 1.2&#xff0c;Mini USB连接电脑 1.3&#xff0c;开发板LAN接口连接路由器 2. Ping开发板与电脑之间通信* 2.1 根据…

消息队列-什么是MQ?何时使用MQ?怎么选择MQ?

什么是MQ&#xff1f; MessageQueue:就是消息 队列&#xff0c;任务队列&#xff0c;指令 队列。 功能&#xff1a;应用程序之间&#xff08;生产者与消费者&#xff09;的通信方式。 使用场景 从下面这个场景来感受MQ 的诞生 如果我们有很多任务需要处理&#xff0c;任务…

小白新手轻松部署扫雷小游戏

小白新手轻松部署扫雷小游戏 云效云效操作导入资源镜像仓库应用配置 最后 说到扫雷小游戏&#xff0c;可以说大家都玩儿过&#xff0c;印象中刚接触计算机的时候&#xff0c;对于这个扫雷小游戏&#xff0c;很多人都很喜欢&#xff0c;觉得很有意思&#xff0c;大家一起挑战看谁…

Spring学习 基于注解的AOP控制事务

8.1.拷贝上一章代码 8.2.applicationContext.xml <!-- 开启spring对注解事务的支持 --> <tx:annotation-driven transaction-manager"transactionManager"/> 8.3.service Service Transactional(readOnlytrue,propagation Propagation.SUPPORTS) publi…

shell中的正则表达式、编程-grep、编程-SED、以及编程-AWK

正则表达式RE 用来处理文本 正则表达式(Regular Expression, RE)是一种字符模式, 用于在查找过程中匹配指定的字符. 在大多数程序里, 正则表达式都被置于两个正斜杠之间; 例如/l[oO]ve/就是由正斜杠界定的正则表达式, 它将匹配被查找的行中任何位置出现的相同模式. 在正则表达…

DD代驾.高级数分 已二面

dd高级数据分析面试感觉更偏数科一点&#xff0c;问了很多AB实验和反事实因果推断的问题&#xff0c;同时也比较关注怎么对模型进行的评价 一面&#xff1a;小组长|组员 40min 自我介绍项目深究1、你在实际工作做AB的流程2、AB实验你们咋算的样本量3、AB实验你们啥情况会做A…

Spark MLlib ----- ALS算法

补充 在谈ALS(Alternating Least Squares)之前首先来谈谈LS,即最小二乘法。LS算法是ALS的基础,是一种数优化技术,也是一种常用的机器学习算法,他通过最小化误差平方和寻找数据的最佳匹配,利用最小二乘法寻找最优的未知数据,保证求的数据与已知的数据误差最小。LS也被用…

Sortable.js:功能强大的JavaScript 拖拽库

原文地址&#xff1a;Sortable.js&#xff1a;功能强大的JavaScript 拖拽库 一、介绍 Sortable.js一个功能强大的JavaScript 拖拽库&#xff01;&#xff01;&#xff01;用于在网页上创建可拖放和可排序的元素。它提供了简单而强大的 API&#xff0c;使开发人员能够轻松地实…

java每日一题——输出9x9乘法表(答案及编程思路)

前言&#xff1a; 打好基础&#xff0c;daydayup! 题目&#xff1a;输出下图9x9乘法表 编程思路&#xff1a;java只能输出行&#xff0c;不能输出列&#xff0c;所以考虑好每一行输出的内容即可 public class demo {public static void main(String[] args) {for (int i 1; i…