100天机器学习day3之多元线性回归

  大家好 我是小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版权协议,转载请附上原文出处链接和本声明。