zoukankan      html  css  js  c++  java
  • Scikit-Learn 线性回归

    1. 引入包

    import matplotlib.pyplot as plt
    import numpy as np
    from sklearn.linear_model import LinearRegression
    from sklearn.preprocessing import PolynomialFeatures
    import sys
    
    reload(sys)
    sys.setdefaultencoding("utf-8")

    2. 画图

    # --------画图---------------
    plt.figure()  # 实例化作图变量
    plt.title('single variable')  # 图像标题
    plt.xlabel('x')  # x轴文本
    plt.ylabel('y')  # y轴文本
    plt.axis([0, 400, 100, 400])
    plt.grid(True)  # 是否绘制网格线

    3. 画点

    # --------画点---------------
    X = [[50], [100], [150], [200], [250], [300]]
    y = [[150], [200], [250], [280], [310], [330]]
    X_test = [[50], [250]]  # 用来做最终效果测试
    y_test = [[150], [310]]  # 用来做最终效果测试
    plt.plot(X, y, 'k.')

    4. 一元线性回归

    # --------画线(一元线性回归)---------------
    model = LinearRegression()
    model.fit(X, y)
    X2 = [[0], [400]]
    y2 = model.predict(X2)
    plt.plot(X2, y2, 'g-')

    5. 二元线性回归

    # --------画线(二元线性回归)---------------
    xx = np.linspace(0, 400, 100)  # 设计x轴一系列点作为画图的x点集
    quadratic_featurizer = PolynomialFeatures(degree=2)  # 实例化一个二次多项式特征实例
    X_train_quadratic = quadratic_featurizer.fit_transform(X)  # 用二次多项式对样本X值做变换
    xx_quadratic = quadratic_featurizer.transform(xx.reshape(xx.shape[0], 1))  # 把训练好X值的多项式特征实例应用到一系列点上,形成矩阵
    regressor_quadratic = LinearRegression()  # 创建一个线性回归实例
    regressor_quadratic.fit(X_train_quadratic, y)  # 以多项式变换后的x值为输入,代入线性回归模型做训练
    
    X_test_quadratic = quadratic_featurizer.transform(X_test)
    plt.plot(xx, regressor_quadratic.predict(xx_quadratic), 'r-')  # 用训练好的模型作图

    6. 准确率输出

    # --------输出,准确率---------------
    print '一元线性回归 r-squared', model.score(X_test, y_test)
    print '二次回归     r-squared', regressor_quadratic.score(X_test_quadratic, y_test)

    7. 显示图像:

    plt.show()  # 展示图像

    8. 输出结果:

    一元线性回归 r-squared 0.985555555556
    二次回归     r-squared 0.99998963648

    9. 显示图像

    LinearRegression参数参考:http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html

  • 相关阅读:
    机器学习(深度学习)
    机器学习(六)
    机器学习一-三
    Leetcode 90. 子集 II dfs
    Leetcode 83. 删除排序链表中的重复元素 链表操作
    《算法竞赛进阶指南》 第二章 Acwing 139. 回文子串的最大长度
    LeetCode 80. 删除有序数组中的重复项 II 双指针
    LeetCode 86 分割链表
    《算法竞赛进阶指南》 第二章 Acwing 138. 兔子与兔子 哈希
    《算法竞赛进阶指南》 第二章 Acwing 137. 雪花雪花雪花 哈希
  • 原文地址:https://www.cnblogs.com/zhuhc/p/7308509.html
Copyright © 2011-2022 走看看