有监督学习包括回归(Regression)算法和分类(Classification)算法两种。
1.回归算法用于连续型的数据预测,分类算法用于离散型的分布预测。
2.回归算法通过建立一个回归方程来预测目标值,并求解这个回归方程的方程系数。
简而言之, 给出一个点集,构造一个函数来拟合这个点集,并且尽可能地让该点集与拟合函数间的误差最小。
线性回归的误差项通常用(平方误差)最小二乘来进行计算。
from sklearn import linear_model
import matplotlib.pyplot as plt
import numpy as np
# x表示企业成本,y表示企业利润
X = [[400], [450], [486], [500], [510], [525], [540], [549], [558], [590], [610], [640], [680], [750], [900]]
Y = [[80], [89], [92], [102], [121], [160], [180], [189], [199], [203], [247], [250], [259], [289], [356]]
# 回归训练
clf = linear_model.LinearRegression()
clf.fit(X, Y)
# 预测结果
X2 = [[400], [750], [950]]
Y2 = clf.predict(X2)
print(Y2)
res = clf.predict(np.array([1200]).reshape(-1, 1))[0]
print(u'预测成本1200元的利润:%.1f' % res)
plt.plot(X, Y, 'ks') # 绘制训练数据的散点图
plt.plot(X2, Y2, 'g-') # 绘制预测数据的直线
plt.show()
结果为:
[[ 75.90731557]
[294.31750652]
[419.12332992]]
预测成本1200元的利润:575.1
系数 [[0.62402912]]
截距 [-173.70433124]
评分系数 0.9118311887769117
知识点拓展:
1. 必须是矩阵格式或者数组格式,才能使用 .reshape(c, -1) 函数, 表示将此矩阵或者数组重组,以 c行d列的形式表示(-1的作用就在此,自动计算d:d=数组或者矩阵里面所有的元素个数/c, d必须是整数,不然报错)
2. (reshape(-1, e)即列数固定,行数需要计算)