Advertisement

用scikit-learn掌握机器学习(一)线性回归

阅读量:

一、 简单线性回归

一般来讲回归是通过连续数据用来预测的,除了逻辑回归,那是个分类算法。线性回归是个监督算法,通过已有的样本和观测值(标签)构成训练数据,然后通过训练模型,来预测以后那些没有标签的样本数据。简单线性回归就是说 样本值和标签之间的关系是线性的。我们先讲一个单样本参数和单一标签的例子。一个通过披萨尺寸预测披萨价格的例子。

尺寸(inch) 价格(dollar)
6 7
8 9
10 13
14 17.5
18 18

我们可以先用matplotlib画出这些点的分布

复制代码
    import matplotlib.pyplot as plt
    %matplotlib inline
    X = [[6],[8],[10],[14],[18]]
    y = [[7],[9],[13],[17.5],[18]]
    plt.figure()
    plt.title("pizza price plot against diameter")
    plt.xlabel("diameter")
    plt.ylabel("price")
    plt.plot(X,y,".")
    plt.axis([0,25,0,25])
    plt.grid(True)
这里写图片描述

可以很明显从图上看出这是一个正相关的两个变量,我们可以用一条最优直线来预测价格
下面的模块调用sl来预测披萨价格

复制代码
    from sklearn.linear_model import LinearRegression
    model = LinearRegression()
    model.fit(X,y)
    print("A 12 inches pizza cost:$%.2f" %model.predict(12))

out: A 12 inches pizza cost:13.68 在这个程序片段里 sklearn.linear_model.LinearRegression是个estimator估测器,估测器通过已有带标签的样本来预测值,评估期都有fit()和predict()方法。fit用来学习,predict用来预测 fit方法学习到了这个简单线性回归的参数theta$,简单线性回归的表达式如下

y = wx + b

首先,我们定义出拟合成本函数,然后对参数进行数理统计。成本函数(cost function)也叫损失函数(loss function),用来定义模型与观测值的误差。模型预测的价格与训练集数据的差异称为残差(residuals)或训练误差(training errors)。
后面我们会用模型计算测试集,那时模型预测的价格与测试集数据的差异称为预测误差(prediction errors)或训练误差(test errors)。

全部评论 (0)

还没有任何评论哟~