sklearn-最小二乘线性回归

sklearn是机器学习中的一个常用的python第三方模块,里面对机器学习的许多方法进行了封装,在进行机器学习的任务时,许多常用的算法可在这个模块中直接调用。并且sklearn中还提供了许多可用于分类、回归的优质数据集。使用好sklearn最直接的方法就是仔细阅读官方http://scikitlearn.org/stable/index.html

sklearn就像是一个模板库,是许多机器学习框架中的基础

首先import datasets在sklearn中加载你需要的数据集

from sklearn import datasets     #从sklearn中导入其自带的优质数据集
import numpy as np
import matplotlib.pyplot as plt
'''
例如:
iris=datasets.load_iris()        #使用其中的鸢尾花数据集(分类)
X=iris.data      #得到数据的特征集,该数据集有四个特征:花萼长、宽和花瓣长、宽
Y=iris.target    #该数据的标签集
'''
boston=datasets.load_boston()    #波士顿房价数据集(506*13,回归)
#print boston.DESCR              #可以查看sklearn数据集的一些属性
X=boston.data                    #数据有506条,每条数据有十三个特征和一个真实值
Y=boston.target             

自己可以将得到的数据集手动划分得到需要的训练集和测试集

sampleRatio=0.5               #划分训练集和测试集各一半
m=len(X)
sampleBoundary=int(m*sampleRatio)
myshuffle=list(range(m))      #注意Python3中range()返回range对象而不是数组对象,要将其转为序列
np.random.shuffle(myshuffle)  #shuffle()函数将序列内的元素全部随机排序
#分别取出训练集和测试集的数据
train_fea=X[myshuffle[sampleBoundary:]]    #前一半数据集作为训练集
train_tar=Y[myshuffle[sampleBoundary:]]
test_fea=X[myshuffle[:sampleBoundary]]     #后一半数据作为测试集
test_tar=Y[myshuffle[:sampleBoundary]]

波士顿房价问题是一个经典的回归问题,可以选用sklearn中的最小二乘线性回归进行拟合。

linear_model中的函数方法
1.fit(X,Y,sample_weight=None)
用于拟合函数,X是训练集特征值,Y为训练集真实值,sample_weight是每条测试数据的权重,三个参数类型都是矩阵型
2.predict(X)
用于预测函数,对测试集的特征值进行预测
3.score(X,Y,sample_weight=None)
评分函数,将返回一个小于1的数值。X是测试集得特征值,Y是测试集得真实值
4.LinearRegreession将方程分为两个部分存放,coef_存放回归系数,intercept_存放截距,查看可以获得该回归方程

from sklearn import linear_model
#使用最小二乘线性回归进行拟合,导入相应的模块
lr=linear_model.LinearRegression()
lr.fit(train_fea,train_tar)  #拟合
y=lr.predict(test_fea)       #得到预测值集合y
plt.scatter(y,test_tar)      #画出散点图,横轴是预测值,纵轴是真实值
plt.plot([y.min(), y.max()], [y.min(), y.max()], 'b',lw=5) #直线的起点为(y.min(),y.min()),终点是(y.max(),y.max())
plt.show()
coef=lr.coef_                #获得该回该方程的回归系数与截距
intercept=lr.intercept_
print("预测方程回归系数:",coef)
print("预测方程截距:",intercept)
score=lr.score(test_fea,test_tar)    #对得到的模型打分
print("对该模型的评分是:%.5f" %score)

注意做出的图反映的是预测值与真实值之间的关系,在直线上的点是预测准确的,直线上方是预测值偏低、下方是预测值偏高。如果想反应预测值与特征值之间的关系,则需要进行降维把多维的特征值降维到二维图像中!

sklearn-最小二乘线性回归_第1张图片

此外sklearn还会提供其他许多数据预处理、误差验证分析等等许多功能。

你可能感兴趣的:(机器学习)