scikit-learn 是基于 Python 语言的机器学习工具,sklearn是目前python中十分流行的用来实现机器学习的第三方包,其中包含了多种常见算法如:决策树,逻辑回归、集成算法(如随机森林)等等。
1.从sklearn导入数据集
sklearn自带多个数据集:
- 鸢尾花数据集:load_iris():用于分类任务的数据集
- 手写数字数据集:load_digits():用于分类任务或者降维任务的数据集
- 乳腺癌数据集load-barest-cancer():简单经典的用于二分类任务的数据集
- 糖尿病数据集:load-diabetes():经典的用于回归认为的数据集,值得注意的是,这10个特征中的每个特征都已经被处理成0均值,方差归一化的特征值。
- 波士顿房价数据集:load-boston():经典的用于回归任务的数据集
- 体能训练数据集:load-linnerud():经典的用于多变量回归任务的数据集
1 2 3 4 5 6 |
# 导入波士顿房价预测数据集 from sklearn.datasets import load_boston Boston=load_boston() X=Boston.data Y=Boston.target print(X,Y) |


2.划分数据集,将数据划分为训练集和测试集两大部分。
1 2 3 4 5 6 7 8 |
# 导入划分训练集函数 from sklearn.model_selection import train_test_split # 导入线性回归模型 from sklearn.linear_model import LinearRegression # 划分数据集 X_train,X_test,Y_train,Y_test=train_test_split(X,Y,test_size=0.2,random_state=888) print(X_train.shape) print(Y_train.shape) |

3.开始训练,我们用线性回归模型。
1 2 3 4 |
# 导入模型 lin_reg=LinearRegression() # 训练 lin_reg.fit(X_train,Y_train) |

4.对模型进行评估
1 2 |
# 对测试集评估 lin_reg.score(X_test,Y_test) |

5.查看斜率
1 2 |
# 看每一列数据斜率 print(lin_reg.coef_) |
array([-1.19007229e-01, 3.64055815e-02, 1.68552680e-02, 2.29397031e+00,
-1.60706448e+01, 3.72371469e+00, 9.22765437e-03, -1.30674803e+00,
3.43072685e-01, -1.45830386e-02, -9.73486692e-01, 7.89797436e-03,
-5.72555056e-01])
6.使用模型,对数据进行预测
1 2 |
# 对测试集上数据预测 lin_reg.predict(X_test) |

7.与真实值对比
1 2 |
# 查看真实值 Y_test |

8.模型调用完成,下面进行误差分析
1 2 3 4 5 6 |
<span class="c1"># 算偏差</span> <span class="n">deviation</span><span class="o">=</span><span class="n">lin_reg</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">X_test</span><span class="p">)</span><span class="o">-</span><span class="n">Y_test</span> <span class="c1"># 求均方根误差</span> <span class="n">RMSE</span><span class="o">=</span><span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">deviation</span><span class="o">*</span><span class="n">deviation</span><span class="p">))</span><span class="o">/</span><span class="mi">102</span> <span class="nb">print</span><span class="p">(</span><span class="n">RMSE</span><span class="p">)</span> |
结果为:3.1432440289344696
9.保存结果
1 2 3 4 5 6 |
# 存放测试结果 import pandas as pd result={"prediction":lin_reg.predict(X_test)} result_file=pd.DataFrame(result) # 转换文件格式 result_file.to_csv('simple_linear_regression.csv') |
总结
Sklearn是一个常用机器学习库,Sklearn 包含了很多种机器学习的方法:
- Classification 分类
- Regression 回归
- Clustering 非监督分类
- Dimensionality reduction 数据降维
- Model Selection 模型选择
- Preprocessing 数据预处理