机器学习 | 回归问题

一、一元线性回归

#导入库
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
#在jupyter notebook中显示图形
%matplotlib inline
from sklearn.linear_model import LinearRegression
#默认设置下matplotlib图片清晰度不够,可以将图设置成矢量格式
%config InlineBackend.figure_format='svg'

#输入数据
x=np.array([1,2,4]).reshape(-1,1)
y=np.array([1.5,3,2.5]).reshape(-1,1)

#训练模型
model=LinearRegression()
model.fit(x,y)

#线性拟合
x_fit=np.arange(0,5.5,0.01).reshape(-1,1)  #构造预测数据
y_fit=model.predict(x_fit)  #利用线性回归对构造数据预测

#输出结果
print("系数为:",model.coef_)
print("截距为:",model.intercept_)
print("拟合线性方程为:y=%f*x+%f"%(model.coef_,model.intercept_))

#画出图像
plt.xlabel("x")  #对横坐标进行标注
plt.ylabel("y")  #对纵坐标进行标注
plt.scatter(x,y,label="训练数据")  #散点图
plt.plot(x_fit,y_fit,label='线性拟合')  #线性拟合
plt.legend(loc="upper left")  #图例标题位置
plt.show()

机器学习 | 回归问题_第1张图片

二、多元线性回归

#导入库
from sklearn.datasets import load_boston
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
from sklearn.metrics import r2_score

#加载数据
boston=load_boston()
X=boston.data  #加载特征数据
y=boston.target  #加载标签数据

#特征数据标准化
stand=StandardScaler()  #创建标准化对象
stand_X=stand.fit_transform(X)  #特征数据标准化处理
X=stand_X  #将特征数据重新指定为X

#划分训练集与测试集
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3,random_state=1)

#线性回归
model=LinearRegression()
model.fit(X_train,y_train)

#模型评估
y_pred=model.predict(X)
mse=mean_squared_error(y,y_pred)
r2=r2_score(y,y_pred)

#输出结果
print("模型的系数为:",model.coef_)
print("模型的截距为:",model.intercept_)
print("模型的均方误差为:%f"%mse)
print("模型的决定系数:%f"%r2)

机器学习 | 回归问题_第2张图片

 

你可能感兴趣的:(机器学习,机器学习,回归,python,数据挖掘,数据分析)