///Meblog///

About Meblog

简单线性回归

📅 2026-1-22

机器学习库 sklearn

引入 python 库 import,提取 sklearn 中需要用到的线性回归模型:

import numpy as np  
from sklearn import linear_model   
# 'linear_model' sklearn中专门用于处理线性回归的模型

相较于:

import sklearn

这种方式避免了直接将整个 sklearn 库都加入,能够节省更多内存。

简单线性回归模型

简单线性回归模型不需要对数据进行归一化处理。

一个例子:对运输里程,运输次数,运输时间之间的关系,建立多元线性回归模型。

# 定义数据集
# 数据格式:[运输里程, 运输次数, 运输时间]
x = np.array([
    [100, 4, 9.3], [50, 3, 4.8], [100, 4, 8.9],
    [100, 2, 6.5], [50, 2, 4.2], [80, 2, 6.2],
    [75, 3, 7.4],  [65, 4, 6],   [90, 3, 7.6], [90, 2, 6.1]
])

# 创建多元特征数组作为输入矩阵,创建结果向量。
# 此例子需要用到的特征是运输里程和运输次数 (取前两列)
X = x[:, :-1]
# 结果向量是运输时间 (取最后一列)
Y = x[:, -1]

print(X, Y)

# 使用 linear_model() 训练简单线性回归的斜率和截距
# 新建一个以 linear_model.LinearRegression() 为模板的线性回归模型
regr = linear_model.LinearRegression() 

# .fit() 输入特征矩阵和结果向量
regr.fit(X, Y) 

# regr.coef_ 将斜率矩阵输出出来,每个特征对应一个斜率
print('coefficients(b1,b2...):', regr.coef_) 

# 创建一组测试集
x_test = np.array([[102, 6], [100, 4]])
y_test = regr.predict(x_test)
print('Predictions:', y_test)

分类型变量独热编码处理

对于分类型变量,例如车型变量,在训练回归模型前需要进行独热编码处理。

训练集数据变为[100,4,1,9.3],其中新增的1表示该样本属于某个特定类别。

在sklearn中,DictVectorizer用于处理分类型变量的独热编码。


from sklearn.feature_extraction import DictVectorizer # 导入独热编码处理模块

x_trans=[] # 存放转换后的数据

for i in range(len(x)):
    x_trans.append({'type':str(x[i][2])}) # 将分类型变量转换为字典格式
    
vec = DictVectorizer(sparse=False) # 创建独热编码转换器
dummyX = vec.fit_transform(x_trans) # 进行独热编码转换
X = np.concatenate((x[:, :2], dummyX), axis=1) # 拼接原有特征和独热编码特征

需要注意的是DictVectorizer需要类型变量为字典格式

检查新的特征矩阵X是否正确包含独热编码后的特征。


    print(X,Y)
print(dummyX)

其结果应该类似如下


    [[100.   4.   0.   1.   0.] # 车型为1的独热编码
    [ 50.   3.   1.   0.   0.] # 车型为0的独热编码
    [100.   2.   0.   0.   1.]]# 车型为2的独热编码
    [9.3 4.8 8.9] # 结果向量
    [[0. 1. 0.]
    [1. 0. 0.]
    [0. 0. 1.]] # 独热编码矩阵

返回文章列表

Next

Home