3.Sklearn-一元线性回归

发布时间 2023-11-04 15:21:24作者: 乐池

1. 导入包

import numpy as np
import matplotlib.pyplot as plt

from sklearn import linear_model

2. 加载训练数据

# 建立datasets_X和datasets_Y用来存储数据中的房屋尺寸和房屋成交价格。
datasets_X = []
datasets_Y =[]
fr = open('prices.txt','r')
lines = fr.readlines()
for line in lines:
    items = line.strip().split(',')  # 去除数据文件中的逗号
    datasets_X.append(int(items[0]))
    datasets_Y.append(int(items[1]))

length = len(datasets_X)
datasets_X = np.array(datasets_X).reshape([length,1])  #将dataset_X转化为数组,并变为二维,以符合线性回归拟合函数输人参数要求。
datasets_Y = np.array(datasets_Y)

3. 建立回归方程

# 以数据datasets_X的最大值和最小值为范围,建立等差数列,方便后续画图。
minX = min(datasets_X)
maxX = max(datasets_X)

X = np.arange(minX,maxX).reshape([-1,1])
linear = linear_model.LinearRegression()
linear.fit(datasets_X, datasets_Y)

调用sklearn.linear_model.LinearRegression()所需参数:

  • fit_intercept :布尔型参数,表示是否计算该模型截距。可选参数。
  • normalize : 布尔型参数,若为True,则X在回归前进行归一化。可选参数。默认值为False。

线性回归fit函数用于拟合输人输出数据,调用形式为linear.fit(X,y, sample weight=None) :
X:为训练向量;
y:为相对于X的目标向量
sample_weight:分配给各个样本的权重数组,一般不需要使用,可省略。

可以使用以下属性来查看模型的参数:
coef_ 属性存储线性回归模型的系数(斜率),它是一个数组,每个特征对应一个系数。
intercept_ 属性存储截距。

from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X, y)

slope = model.coef_
intercept = model.intercept_

一旦模型被训练,你可以使用 predict(X)方法来进行预测,其中 X 是要进行预测的特征矩阵。该方法返回预测的目标变量值。

y_pred = model.predict(X)

4. 可视化处理

plt.scatter(datasets_X, datasets_Y, color = 'red')
plt.plot(X,linear.predict(X), color = 'blue')
plt.xlabel('Area')
plt.ylabel('Price')
plt.show()