接着复盘机器学习的入门级项目之一“波士顿房价预测”。先看一下数据集介绍:
先加载需要的包:
from sklearn.datasets import load_boston
import matplotlib.pyplot as plt
import numpy as np
接着进行数据预处理,这在机器学习中是非常重要的一步。一般包含这几点:1.去除唯一属性;2.处理缺失值;3.特征编码;4.数据标准化;5.数据正则化;6.特征选择(降维)
dataset = load_boston()
x_data = dataset.data
y_data = dataset.target
name_data = dataset.feature_names
接着,我们进行特征工程。特征工程真的很重要。如果特征工程做的好,不管是模型的建立或训练,还是最终的结果呈现,都是很好的。
for i in range(13): # 13是name_data的维数,你可以在上一步中将name_data打印出来查看
plt.subplot(7, 2, i+1) # 7行2列第i+1个图
plt.scatter(x_data[:,i], y_data, s = 10) # 横纵坐标和点的大小
plt.title(name_data[i])
plt.show()
print(name_data[i], np.corrcoef(x_data[:,i], y_data))
你会得到下面这样的不同特征与房价之间的特征图,你可以根据该图判断某一特征与房价之间的关系,并选择是否在后面建立模型的时候丢弃该特征。
经过上面散点图的分析,可以看到数据异常的变量需要特殊处理,根据散点图分析,房屋的’RM(每栋住宅的房间数)’,‘LSTAT(地区中有多少房东属于低收入人群)’,'PTRATIO(城镇中的教师学生比例)’特征与房价的相关性最大,所以,将其余不相关特征剔除。
i_ = []
for i in range(len(y_data)):
if y_data[i] == 50:
i_.append(i)