人工智能机器学习入门——线性回归

一、机器学习概述

什么是机器学习?(Machine Learning)

机器学习是一种实现人工智能的方法。

从数据中寻找规律、建立关系,根据建立的关系去解决问题。

机器学习是机器从数据中自动分析获得模型,并利用模型对未知数据进行预测。

二、机器学习类别

  • 监督式学习
  • 无监督式学习
  • 半监督式学习
  • 强化学习
  • 生成式 AI
    在这里插入图片描述

监督学习

  • 线性回归
  • 逻辑回归
  • 决策树
  • 神经网络、卷积神经网络、循环神经网络

无监督学习

  • 聚类算法

三、线性回归

什么是回归分析?(Regression Analysis)

回归分析

回归分析:根据数据确定两种或两种以上变量间相互依赖的定量关系

函数表达式:
y =f(x1,x2… xn)

在这里插入图片描述
线性回归

线性回归:回归分析中,变量与因变量存在线性关系

在这里插入图片描述
在这里插入图片描述
Scikit-learn

Python语言中专门针对机器学习应用而发展起来的一款开源框架(算法库),可以实现数据预处理、分类、回归、降维、模型选择等常用的机器学习算法
在这里插入图片描述

Scikit-learn特点:

  • 集成了机器学习中各类成熟的算法,容易安装和使用,样例丰富,教程和文档也非常详细
  • 不支持Python之外的语言,不支持深度学习和强化学习

Scikit-learn官网:https://scikit-learn.org/stable/index.html
Scikit-learn中文社区:https://scikit-learn.org.cn/

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

pip install scikit-learn -i https://pypi.tuna.tsinghua.edu.cn/simple/

在这里插入图片描述
在这里插入图片描述

四、单因子线性回归实战

data_single.csv的内容如下:
在这里插入图片描述

#Python调用Sklearn实现线性回归

#数据加载
import pandas as pd
data = pd.read_csv("data_single.csv")
print(type(data),data.shape)
data.head()

在这里插入图片描述

#数据赋值
x = data.loc[:,'x']
y = data.loc[:,'y']
print(x,y)

在这里插入图片描述

#展示图形
from matplotlib import pyplot as plt
plt.figure(figsize=(3,3))
plt.scatter(x,y)
# plt.show()

在这里插入图片描述

#设置线性回归模型
from sklearn.linear_model import LinearRegression
lr_model = LinearRegression()
#转换维度
import numpy as np
x = np.array(x)
x = x.reshape(-1,1)
print(type(x),x.shape)
y = np.array(y)
y = y.reshape(-1,1)
print(type(y),y.shape)

在这里插入图片描述

#训练模型
lr_model.fit(x,y)

在这里插入图片描述

#预测x对应的y
y_predict = lr_model.predict(x)
print(y_predict)
print(data)

在这里插入图片描述

#使用模型预测x=3.5时y的值
y_3 = lr_model.predict([[3.5]])
print(y_3)

在这里插入图片描述

#打印a,b  (y = ax + b)
a = lr_model.coef_
b = lr_model.intercept_
print(a,b)

在这里插入图片描述

#评估模型的表现
from sklearn.metrics import mean_squared_error,r2_score
MSE = mean_squared_error(y,y_predict)
R2 = r2_score(y,y_predict)
print(MSE,R2)

在这里插入图片描述

  • MSE越小越好,R2分数越接近1越好
  • y vs y_predict集中度越高越好(越接近直线分布)
#画图展示 y vs y_predict集中度
plt.figure()
plt.plot(y,y_predict)
plt.show()

在这里插入图片描述

四、多因子线性回归实战

预测房价问题,数据集:usa_housing_price.csv

#加载数据
import pandas as pd
import numpy as np
data = pd.read_csv('usa_housing_price.csv')
data.head()

在这里插入图片描述

#画图展示(展示在一幅图中,2行3列图)
from matplotlib import pyplot as plt
fig = plt.figure(figsize=(8,8))
fig1 = plt.subplot(231)
plt.scatter(data.loc[:,'Avg. Area Income'],data.loc[:,'Price'])
plt.title('Price VS Income')

fig2 = plt.subplot(232)
plt.scatter(data.loc[:,'Avg. Area House Age'],data.loc[:,'Price'])
plt.title('Price VS Age')

fig3 = plt.subplot(233)
plt.scatter(data.loc[:,'Avg. Area Number of Rooms'],data.loc[:,'Price'])
plt.title('Price VS Rooms')

fig4 = plt.subplot(234)
plt.scatter(data.loc[:,'Area Population'],data.loc[:,'Price'])
plt.title('Price VS Area')

fig5 = plt.subplot(235)
plt.scatter(data.loc[:,'size'],data.loc[:,'Price'])
plt.title('Price VS Size')
plt.show()

在这里插入图片描述

#定义 x 和 y
x = data.loc[:,'size']
y = data.loc[:,'Price']
x.head()

在这里插入图片描述

y.head()

在这里插入图片描述

#创建线性回归模型
from sklearn.linear_model import LinearRegression
LR1 = LinearRegression()
#数组进行维度转换
x = np.array(x).reshape(-1,1)
print(x.shape)

在这里插入图片描述

#训练模型
LR1.fit(x,y)

在这里插入图片描述

#计算单因子对应的价格
y_predict_1 = LR1.predict(x)
print(y_predict_1)

在这里插入图片描述

#评估预测模型
from sklearn.metrics import mean_squared_error,r2_score
mean_squared_error_1 = mean_squared_error(y,y_predict_1)
r2_score_1 = r2_score(y,y_predict_1)
print(mean_squared_error_1,r2_score_1)

在这里插入图片描述

#可视化预测结果
fig6 = plt.figure(figsize=(5,3))
plt.scatter(x,y)
plt.plot(x,y_predict_1,'r')
plt.show()

在这里插入图片描述

#多因子
x_multi = data.drop(['Price'],axis=1)
x_multi

在这里插入图片描述

#创建多因子回归模型
LR_multi = LinearRegression()
#训练模型
LR_multi.fit(x_multi,y)

在这里插入图片描述

#模型的预测
y_predict_multi = LR_multi.predict(x_multi)
print(y_predict_multi)

在这里插入图片描述

#评估预测模型
mean_squared_error_multi = mean_squared_error(y,y_predict_multi)
r2_score_multi = r2_score(y,y_predict_multi)
print(mean_squared_error_1,r2_score_1)
print(mean_squared_error_multi,r2_score_multi)

在这里插入图片描述

#多因子y,y_predict_multi对比
fig7 = plt.figure(figsize=(5,3))
plt.scatter(y,y_predict_multi)
plt.show()

在这里插入图片描述

#单因子y,y_predict_1对比
fig8 = plt.figure(figsize=(5,3))
plt.scatter(y,y_predict_1)
plt.show()

在这里插入图片描述

#测试多因子模型效果
X_test = [65000,5,5,30000,200]
# X_test = np.array(X_test).reshape(1,-1)

X_test = pd.DataFrame(np.array(X_test).reshape(1,-1),columns=['Avg. Area Income',
                                                            'Avg. Area House Age',
                                                             'Avg. Area Number of Rooms',
                                                             'Area Population',
                                                              'size',])
print(X_test)

在这里插入图片描述

#预测房价
y_test_predict = LR_multi.predict(X_test)
print(y_test_predict)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值