数据分析的主要流程
- 1.获取数据
- 2.观察数据,做出不同处理,称为特征预处理
- 3.选用机器算法训练数据,得出一个模型
- 4.利用模型预测结果
- 5.评估
先解释一下什么是特征,每个物品比如花,它的特征就是花蕊,花瓣,花的颜色等,你可能会奇怪这些特征怎么用数字来分析,所以这时候就需要我们在保存各种不同的样本花时对不同的特征用对应的数字区间来表示,比如花的颜色你可以划分到区间1-7分别对应赤橙黄绿青蓝紫七种不同的颜色。好像挺麻烦的样子,不过这些你暂时不用担心,一般给你训练的数据都是已经初步处理好的,你只要分析这些特征,根据这些特征值能得到什么样的目标值就可以了。
获取数据:
- 先安装一个非常方便玩的库,里面有一些数据集和机器学习方法,就是sklearn(安装库的命令:pip install sklearn)
- 从sklearn中导入数据集后要对数据进行切分,一般按照7:3的比例切分成训练集和测试集,顾名思义,大部分数据拿来训练,小部分用来测试训练出的模型效果如何,所以要进行数据切分,sklearn提供了切割数据集的方法,后面代码会展示。
特征预处理:
- 这里先不解释原理。有些特征的数据普遍很大,有些很小,这样会导致某些特征权重(影响结果的程度)大,某些又很小,造成预测结果不准确,所以先对数据进行标准化处理,sklearn提供了对应的方法。
训练模型:
- 机器学习算法最常见的就是线性回归(暂时不解释原理),本文将采用线性回归算法进行数据的训练,该方法sklearn有提供。
预测结果:
- 训练好模型后,可以将测试集的数据(仅仅是特征值)投入到训练好的模型中训练,得到预测的结果。
评估:
- 将测试集的目标值与刚刚训练好的预测值比较,评估预测的误差。
代码部分
以下是用pycharm对波士顿房价预测的案例:
#从sklearn导入需要用到的波士顿房价数据集
from sklearn.datasets import load_boston
#从sklearn导入需要对数据集进行切割的方法
from sklearn.model_selection import train_test_split
#从sklearn导入对数据特征进行标准化的方法
from sklearn.preprocessing import StandardScaler
#从sklearn导入线性回归算法
from sklearn.linear_model import LinearRegression
#从sklearn导入均方误差方法进行预测结果的评估
from sklearn.metrics import mean_squared_error
# 1.获取波士顿房价数据
data = load_boston()
# 2.调用train_test_split方法进行数据集划分
x_train, x_test, y_train, y_test = train_test_split(data.data, data.target, random_state=22)
# x_train和y_train为切割后的训练集的特征值与目标值(结果)
# x_test和y_test为切割后的测试集的特征值与目标值(结果)
# 3.特征工程-标准化
transfer = StandardScaler()
x_train = transfer.fit_transform(x_train)
x_test = transfer.fit_transform(x_test)
# 4.机器学习-线性回归
estimator = LinearRegression()
estimator.fit(x_train, y_train) #投入训练集的特征值与目标值进行训练
# 5.模型评估
# 5.1 获取系数等值
y_predict = estimator.predict(x_test) #调用模型的predict方法进行测试集的预测
print("预测值为:\n", y_predict)
print("模型中的系数为:\n", estimator.coef_)
print("模型中的偏置为:\n", estimator.intercept_) #这步暂时不用深究,涉及到原理
# 5.2 评价
# 均方误差
error = mean_squared_error(y_test, y_predict)#均方误差是啥可以百度一下,对于线性回归是个不错的评价标准
print("误差为:\n", error)
以上的房价预测也可通过其他机器学习算法或许能得到更好的模型,sklearn还有很多可供玩耍的数据集与机器学习算法,有兴趣可以直接百度进入官网了解。
你可能会疑惑我到现在对数据集是什么样子都不知道,所以需要对数据进行可视化。比较好用的工具之一就是jupyter,待续~