当前位置: 代码迷 >> 综合 >> 机器学习小目标--简单线性回归&最小二乘法 &多元线性回归
  详细解决方案

机器学习小目标--简单线性回归&最小二乘法 &多元线性回归

热度:100   发布时间:2023-09-05 18:27:35.0

线性回归(又名普通最小二乘法)

线性回归,或者普通最小二乘法,是回归问题最简单也是最经典的线性方法。线性回归寻找参数w和b,使得对训练集的预测值与真实的回归目标值y之间的均方误差最小。均方误差是预测值与真实值之差的平方和除以样本数。线性回归没有参数,这是一个优点。

import matplotlib.pyplot as plt  #导入matplotlib库
import numpy as np  #导入numpy库
import pandas as pd  #导入pandas库
from sklearn.datasets import load_boston #从sklearn数据集库导入boston数据
boston =load_boston() #从读取的房价数据存储在boston变量中
boston.keys()  #打印boston包含内容
boston.feature_names  #打印data的变量名
bos=pd.DataFrame(boston.data)  #将data转换为DataFrame格式以方便展示
bos[5].head()   #data的第6列数据为RM#将taget打印出来
bos_taget=pd.DataFrame(boston.target) #将target转换为DataFrame格式以方便展示
print(bos_taget)#将target打印出来
bos_target=pd.DataFrame(boston.target) #将target转换为DataFrame格式以方便展示
bos_target.head()#绘制房屋价格,每个房屋的房间数量的散点图
%matplotlib inline
import matplotlib.font_manager as fm
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']   #设置简黑字体
mpl.rcParams['axes.unicode_minus'] = False # 解决‘-’bugX=bos.iloc[:,5:6]
y=bos_targetplt.scatter(X,y)
plt.xlabel(u"住宅平均房间数")
plt.ylabel(u"房屋价格")from sklearn.linear_model import LinearRegression
lr=LinearRegression()  #设定回归算法
lr.fit(X_train,y_train)  #使用训练数据进行参数求解lr.intercept_#求解截距项
lr.coef_  #求解系数为#基于求解参数,对测试集进行预测
y_hat=lr.predict(X_test)
y_hat[:9]#基于求解参数,对测试集进行预测
y_hat=lr.predict(X_test)
y_hat[:9]

机器学习小目标--简单线性回归&最小二乘法 &多元线性回归机器学习小目标--简单线性回归&最小二乘法 &多元线性回归机器学习小目标--简单线性回归&最小二乘法 &多元线性回归机器学习小目标--简单线性回归&最小二乘法 &多元线性回归

多变量线性回归实现:观影人数的拟合

%matplotlib inline
import matplotlib.pyplot as plt  #导入matplotlib库
import numpy as np  #导入numpy库
import pandas as pd  #导入pandas库df=pd.read_csv(r"Data/3_film.csv")
df.head()#输出各变量的直方图
df.hist(xlabelsize=12,ylabelsize=12,figsize=(12,7)) #调整直方图尺寸#多变量的数据可视化密度图
df.plot(kind='density',subplots=True,layout=(2,2),sharex=False,fontsize=8,figsize=(12,7))#多变量的数据可视化之箱线图
df.plot(kind='box',subplots=True,layout=(2,2),sharex=False,sharey=False,fontsize=8,figsize=(12,7))#多变量的数据可视化之相关系数热力图
names = ['filmnum','filmsize','ratio','quality'] #设置变量名
correlations = df.corr()  #计算变量之间的相关系数矩阵
# 绘制相关系数热力图
fig = plt.figure() #调用figure创建一个绘图对象
ax = fig.add_subplot(111) # 调用画板绘制第一个子图
cax = ax.matshow(correlations, vmin=0.3, vmax=1)  #绘制热力图,从0.3到1
fig.colorbar(cax)  #将matshow生成热力图设置为颜色渐变条
ticks = np.arange(0,4,1) #生成0-4,步长为1
ax.set_xticks(ticks)  #生成刻度
ax.set_yticks(ticks)
ax.set_xticklabels(names) #生成x轴标签
ax.set_yticklabels(names)from pandas.plotting import scatter_matrix  #导入散点图矩阵
scatter_matrix(df,figsize=(8,8), c='b')  #绘制散点图from sklearn.model_selection import train_test_split
X = df.iloc[:,1:4]  #选取data中的X变量
y =df.filmnum  #设定target为y
#25%的数据构建测试样本,剩余作为训练样本
# 把X、y转化为数组形式,以便于计算
X = np.array(X.values)  
y = np.array(y.values) 
#以25%的数据构建测试样本,剩余作为训练样本
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.25,random_state =1)from sklearn.linear_model import LinearRegression #使用LinearRegression库
lr=LinearRegression()  #设定回归算法
lr.fit(X_train,y_train) #使用训练数据进行参数求解lr.intercept_#求解截距项
lr.coef_  #求解系数为#基于求解参数,对测试集进行预测
y_hat=lr.predict(X_test)
y_hat[:9]plt.figure(figsize=(10,6))  #设置图片尺寸
t = np.arange(len(X_test))  #创建t变量
#绘制y_test曲线
plt.plot(t, y_test, 'r', linewidth=2, label='y_test') 
#绘制y_test曲线
plt.plot(t, y_hat, 'g', linewidth=2, label='y_hat') 
plt.legend() #设置图例

机器学习小目标--简单线性回归&最小二乘法 &多元线性回归 

机器学习小目标--简单线性回归&最小二乘法 &多元线性回归 

机器学习小目标--简单线性回归&最小二乘法 &多元线性回归 

机器学习小目标--简单线性回归&最小二乘法 &多元线性回归 

机器学习小目标--简单线性回归&最小二乘法 &多元线性回归 

机器学习小目标--简单线性回归&最小二乘法 &多元线性回归