机器学习记录第一天:简单的线性回归
菜鸟一个,希望每天记录自己所得,以便以后可以嘲笑自己
今天学了线性回归,公式什么的都推导了一遍,但是感觉还是编程会学的更快。
虽然python有线性回归的包,可以使用但是为了加深理解还是手动来一遍把。
在网上随机找了一组数据:
现在我们就需要利用这样一组数据来进行预测。
首先利用我们的最小二乘来写出我们的预测函数:
def predictfunc(x, w, b):
y = w * x + b
return y
利用w,b的公式来编写我们的代码:
def w_b_calculator(x, y):
d = len(x)
w = (d*sum(x*y)-sum(x)*sum(y))/(d*sum(x*x)-sum(x)*sum(x))
b = (sum(y)-sum(w*x))/d
return w,b
这样我们就可以求得我们的w,b了 将w,b和需要预测的数据带入我们的predictfunc就能得到预测结果啦。
画图再显示一下:
import matplotlib.pyplot as plt
plt.scatter(x, y)
plt.plot(x, x*w+b, 'r')
plt.show()
算是得到我们想要的结果了啊。
手写代码帮助我们加深理解与记忆,熟练之后我们就可以直接使用python的库就可以了。
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
x = np.array([[56], [72], [69], [88], [102], [86], [76], [79], [94], [74]])
y = np.array([92, 102, 86, 110, 130, 99, 96, 102, 105, 92])
model = LinearRegression()
model.fit(x, y)
b = model.intercept_
w = model.coef_
plt.scatter(x, y)
plt.plot(x, x*w+b, 'r')
plt.show()
这里有两点需要注意下,第一注意看我们的x,数据都是按行分开的,因为值的属性就一个大小,如何换成多个属性的值,那么每一行就是包括了一个值的多个属性,这里需要注意下;第二就是intercept_和coef_,这里一个表示w一个表示b 都是内置的函数,并且第一点说的注意事项也是fit这个函数要求x必须那样表达。
可以在cmd界面使用help查看LinearRegression这个包的具体使用方法:
这里有很详细的介绍,在使用help之前记得先导入哈。