人工智能项目汇总
项目集项目一:波斯顿房价预测项目所需数据集:housing-data.txt表头解释CRIM: 城镇人均犯罪率ZN: 住宅用地所占比例INDUS: 城镇中非住宅用地所占比例CHAS: 虚拟变量,用于回归分析NOX: 环保指数RM: 每栋住宅的房间数AGE: 1940 年以前建成的自住单位的比例DIS: 距离 5 个波士顿的就业中心的加权距离RAD: 距离高速公路的便利指数TAX: 每一万美元的不动
项目集
项目一:波斯顿房价预测
项目所需数据集:housing-data.txt
表头解释
CRIM: 城镇人均犯罪率
ZN: 住宅用地所占比例
INDUS: 城镇中非住宅用地所占比例
CHAS: 虚拟变量,用于回归分析
NOX: 环保指数
RM: 每栋住宅的房间数
AGE: 1940 年以前建成的自住单位的比例
DIS: 距离 5 个波士顿的就业中心的加权距离
RAD: 距离高速公路的便利指数
TAX: 每一万美元的不动产税率
PTRATIO: 城镇中的教师学生比例
B: 城镇中的黑人比例
LSTAT: 地区中有多少房东属于低收入人群
MEDV: 自住房屋房价中位数(也就是均价)
普通线性回归
import matplotlib
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from matplotlib.font_manager import FontProperties
from sklearn.linear_model import LinearRegression
# font = FontProperties(fname='/Library/Fonts/Heiti.ttc')
"""导入数据"""
df = pd.read_csv('dataset/housing-data.txt', sep='\s+', header=0)
# 显示所有列
pd.set_option('display.max_columns', None)
# 显示所有行
pd.set_option('display.max_rows', None)
# print(df.head())
"""特征选择(以MEDV为标记)"""
# 选择三列特征
# RM: 每栋住宅的房间数 MEDV: 自住房屋房价中位数(也就是均价)LSTAT: 地区中有多少房东属于低收入人群
# cols = ['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO', 'B', 'LSTAT', 'MEDV']
# 构造三列特征之间的联系即构造散点图矩阵
cols = ['RM', 'MEDV', 'LSTAT']
sns.pairplot(df[cols], height=3)
plt.tight_layout()
plt.show()
# 关联矩阵
# 求解上述三列特征的相关矩阵
# 对于一般的矩阵X,执行A=corrcoef(X)后,A中每个值的所在行a和列b,反应的是原矩阵X中相应的第a个列向量和第b个列向量的相似程度(即相关系数)
cm = np.corrcoef(df[cols].values.T)
# 控制颜色深浅
sns.set(font_scale=2)
# 构造关联矩阵
hm = sns.heatmap(cm, cbar=True, annot=True, square=True, fmt='.2f', annot_kws={'size': 20}, yticklabels=cols,
xticklabels=cols)
plt.show()
"""训练模型"""
X = df[['RM']].values
y = df['MEDV'].values
lr = LinearRegression()
lr.fit(X, y)
plt.scatter(X, y, c='r', s=30, edgecolor='white', label='training data')
plt.plot(X, lr.predict(X), c='g')
plt.xlabel('[MEDV]')
plt.ylabel('[RM]')
plt.title('HousePricePredict')
plt.legend()
plt.show()
print('普通线性回归斜率:{}'.format(lr.coef_[0]))


综合散点图矩阵和关联矩阵可得RM和MEDV有明显线性关系,接下来就要根据RM和MEDV的关系进行训练
多元线性回归
【TIPS】常见问题
读取CSV
- read_csv读取时会自动识别表头,数据有表头时不能设置header为空(默认读取第一行,即header=0);数据无表头时,若不设置header,第一行数据会被视为表头,应传入names参数设置表头名称或设置header=None
- 长数据完整打印方法
import numpy as np np.set_printoptions(threshold=np.inf)import pandas as pd #显示所有列 pd.set_option('display.max_columns', None) #显示所有行 pd.set_option('display.max_rows', None) #设置value的显示长度为100,默认为50 pd.set_option('max_colwidth',100)tensor数据 将tensor转为list即可。 tensor数据省略问题,numpy和pandas的设置都是无效的。
参考文献
[1] https://www.cnblogs.com/nickchen121/p/11686958.html
[2] https://blog.csdn.net/sinat_32872729/article/details/93025161
[3] https://blog.csdn.net/qq_17753903/article/details/84947089
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)