avatar

机器学习a-z 第二章 简单线性回归

第二章 简单线性回归

简单原理

简单? 自变量只有一个维度

如何拟合线性回归

红色的y是真实的数据y

绿色的是拟合的函数的y

python实现

导入数据和包
# 导入标准库
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd


# 导入数据集
dataset = pd.read_csv('Salary_Data.csv')
X = dataset.iloc[:,:-1].values # -1 除去最后一行
y = dataset.iloc[:,1].values
划分训练集和测试集

这里划分3:1

总共30组数据,test10组,tran20组

# 将数据分为训练集和测试集
from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=1/3,random_state = 0)
特征缩放

简单线性回归包含了特征缩放,所以就不用自己写了

创建简单线性回归器
#导入线性回归类
from sklearn.linear_model import LinearRegression
#创建回归器
regressor = LinearRegression()
regressor.fit(X_train, y_train)
用回归器预测测试集
#用回归器预测测试集应变量的结果
y_pred = regressor.predict(X_test)
图像化比较

训练集

#图像化
plt.scatter(X_train, y_train, color='red')
plt.plot(X_train, regressor.predict(X_train), color='blue')
#图像加上标题
plt.title('Salary VS Experience (training set)')
plt.xlabel('Years of Experience')
plt.ylabel('Salary')
plt.show()

测试集

plt.scatter(X_test, y_test, color='red')
#修改嘛?不用
#回归器是针对训练集拟合的
plt.plot(X_train, regressor.predict(X_train), color='blue')
#图像加上标题
plt.title('Salary VS Experience (test set)')
plt.xlabel('Years of Experience')
plt.ylabel('Salary')
plt.show()

可以看到训练的结果很不错

红色的点几乎就在拟合的直线上面

代码
# -*- coding: utf-8 -*-
"""
Created on Mon Mar 30 16:11:12 2020

@author: vccyb
"""

# 简单线性回归

# 导入标准库
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd


# 导入数据集
dataset = pd.read_csv('Salary_Data.csv')
X = dataset.iloc[:,:-1].values
y = dataset.iloc[:,1].values


# 将数据分为训练集和测试集
from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=1/3,random_state = 0)


#导入线性回归类
from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
regressor.fit(X_train, y_train)

#用回归器预测测试集应变量的结果
y_pred = regressor.predict(X_test)

#图像化
plt.scatter(X_train, y_train, color='red')
plt.plot(X_train, regressor.predict(X_train), color='blue')
#图像加上标题
plt.title('Salary VS Experience (training set)')
plt.xlabel('Years of Experience')
plt.ylabel('Salary')
plt.show()


#预测结果和新的样品比较
#测试集实际数据和回归器二点比较情况
plt.scatter(X_test, y_test, color='red')
#修改嘛?不用
#回归器是针对训练集拟合的
plt.plot(X_train, regressor.predict(X_train), color='blue')
#图像加上标题
plt.title('Salary VS Experience (test set)')
plt.xlabel('Years of Experience')
plt.ylabel('Salary')
plt.show()

更新



文章作者: Chen
文章链接: https://vccyb.gitee.io/myblog/2020/03/30/ML/ML-2/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 东川
打赏
  • 微信
    微信
  • 支付寶
    支付寶

评论