大家好 我是小k 先来谈谈原版兼容问题 由于我们现在都是用的python3 导致原版的部分代码无法使用 就如本例的独热编码和数据集划分 对于这些问题 我进行了改善使用了兼容的写法 希望能帮助到大家
多元线性回归 “多元” 即意味着拥有多个自变量 在本例子中 变量就包括R&D Spend Administration等等 展示数据集如下

那么如何在有多个变量的情况下进行预测呢? 其实方法与单个变量是类同的 那么我们就开始吧
第一步:导入库和数据集
import pandas as pd
import numpy as np
data = pd.read_csv(r'D:\python\100daysdata\50_Startups.csv')
x = data.iloc[:,:-1].values
y = data.iloc[:,4].values
print(x)
运行结果如下:
[[165349.2 136897.8 471784.1 'New York']
[162597.7 151377.59 443898.53 'California']
[153441.51 101145.55 407934.54 'Florida']
[144372.41 118671.85 383199.62 'New York']
[142107.34 91391.77 366168.42 'Florida']
[131876.9 99814.71 362861.36 'New York']
[134615.46 147198.87 127716.82 'California']
[130298.13 145530.06 323876.68 'Florida'] 等等等第二步:处理离散数据
from sklearn.preprocessing import LabelEncoder,OneHotEncoder
lbl = LabelEncoder()
x[:,3] = lbl.fit_transform(x[:,3]) //字符串转化
print(x)
one = OneHotEncoder(categories = 'auto')
result = one.fit_transform(data['State'].values.reshape(-1, 1)).toarray()//独热编码
print(result)
运行结果分别展示:
[[165349.2 136897.8 471784.1 2]
[162597.7 151377.59 443898.53 0]
[153441.51 101145.55 407934.54 1]
[144372.41 118671.85 383199.62 2]
[142107.34 91391.77 366168.42 1]
[131876.9 99814.71 362861.36 2]
[134615.46 147198.87 127716.82 0]
[130298.13 145530.06 323876.68 1]
[120542.52 148718.95 311613.29 2]
[123334.88 108679.17 304981.62 0]
[[0. 0. 1.]
[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]
[0. 1. 0.]
[0. 0. 1.]
[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]
[1. 0. 0.]
[0. 1. 0.]
[1. 0. 0.]
[0. 1. 0.]
[1. 0. 0.]
[0. 1. 0.]
仔细观察观察 再和上一个print对比一下可以发现变化那么问题来了 打印出的result是特征state的转化向量表达 我们要想个办法把它和原数据集接起来 并把原来的state删掉 这样在训练的时候 丢进去我们转化的数据才会有意义 这个转化过程 我和我的同伴琢磨了一会时间 展示出一种方法
one = OneHotEncoder(categories = 'auto')
result = one.fit_transform(data['State'].values.reshape(-1, 1)).toarray()
columns = one.get_feature_names()
result = pd.DataFrame(result,columns=columns)
data = pd.concat([data,result],axis=1)
data.drop('State',axis = 1,inplace=True)
print(data.head())
打印结果:
R&D Spend Administration ... x0_Florida x0_New York
0 165349.20 136897.80 ... 0.0 1.0
1 162597.70 151377.59 ... 0.0 0.0
2 153441.51 101145.55 ... 1.0 0.0
3 144372.41 118671.85 ... 0.0 1.0
4 142107.34 91391.77 ... 1.0 0.0
第三步:划分训练集并训练模型
from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.3,random_state=1314)
from sklearn.linear_model import LinearRegression
regression = LinearRegression()
regression.fit(x_train,y_train)第四步:进行预测
y_pred = regression.predict(x_test)
print(y_pred)
[184370.63059281 99601.0754169 44175.15295852 100849.42304829
150770.71018697 151518.55646402 55814.96929056 72433.03806353
42716.4698439 115227.63123226 96183.76037181 88598.25608205
161613.57785762 68908.88081774 116983.24521586]总的来说 大体过程和day2差不多 (本文模板参自Avik Jain)
版权声明:本文为qq_52240350原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。