机器学习算法-LinearRegression(线性回归)

一、原理

依旧参考大佬:https://zhuanlan.zhihu.com/p/85981041

首先十分感谢大佬整理出的成块的知识,并且十分易懂。

线性回归必须理解的几个点:

1、线性指一条直线,y=ax+b,我们下面使用多个特征值,那就有多个x输入,目标求出a和b

2、代价函数:指的是拟合点到实际点的距离计算,多点求和求平均,我们任务就是是代价函数最小

注意点:求导时候记得将a和b看做自变量,因为x已知。 

3、梯度下降的原理(为了计算机更好在多维度计算求导,这里不过多的描述,大佬说的蛮清楚的)

二、使用sklearn.linear_model.LinearRegression()简单实现

使用的数据集是sklearn.datasets.load_boston(),也就是波士顿房价的预测数据集

如果想详细了解下该数据集,移步下:https://blog.csdn.net/appleyuchi/article/details/84998894(感谢整理)

以下是我使用该API写的简单实现,同时其中也使用了机器学习中的模型保存和加载应用,代码如下:

#使用回归模型预测连续结果(boston数据集13个输入变量,1个输出即自住房房价(1000美元))
import numpy as np
from sklearn import datasets
from sklearn import metrics
from sklearn import model_selection as model
from sklearn import linear_model
import matplotlib.pyplot as plt
boston=datasets.load_boston()

#了解下boston这个数据集
# print(dir(boston)) #了解下boston中的方法和变量
# print(boston.DESCR) #看一下关于该数据集的描述
# print('boston.feature_names',boston.feature_names) #特征名称,除了这些还可以查看data和target等
# print('data type:',type(boston.data))
# print('data shape:',boston.data.shape)
# print('target shape:',boston.target.shape)

#训练模型
linreg=linear_model.LinearRegression()
#随机划分训练集和测试集,分别是训练特征,测试特征,训练真实房价,测试真实房价
x_train,x_test,y_train,y_test=model.train_test_split(boston.data,boston.target,test_size=0.1,random_state=42)
linreg.fit(x_train,y_train)

#保存训练好的模型
from sklearn.externals import joblib
joblib.dump(linreg,  "./model/linear_model.pkl")   # lr是训练好的模型, "./ML/test.pkl"是模型要保存的路径及保存模型的文件名,其中,'pkl' 是sklearn中默认的保存格式gai

#加载训练好的模型
ln = joblib.load("./model/linear_model.pkl")

#测试模型
y_pred=ln.predict(x_test)
print(metrics.mean_squared_error(y_test,y_pred)) #计算均方差

plt.plot(y_test,label='ground truth')
plt.plot(y_pred,label='predicted')
plt.legend(loc='lower left')
plt.xlabel('test data point')
plt.show()

结果如下:

扫描二维码关注公众号,回复: 9967944 查看本文章

蓝色是测试的房价,黄色是通过拟合预测出来的房价

发布了53 篇原创文章 · 获赞 9 · 访问量 3248

猜你喜欢

转载自blog.csdn.net/weixin_41039168/article/details/104951935
今日推荐