当前位置: 首页 > ai >正文

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

一、机器学习概述

什么是机器学习?(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)

在这里插入图片描述

http://www.xdnf.cn/news/19748.html

相关文章:

  • 高光谱成像在文物考古和字画检测中的应用
  • 普通人如何用 AI 提效?5 个低门槛工具 + 3 类场景案例,让 AI 成为日常助手
  • VMWare上搭建分布式Hadoop集群
  • 不只会修图!谷歌发布官方指南,教你用 Nano Banana 玩转文生图
  • pip的缓存
  • 【STL】C++ 开发者必学字符类详解析:std::string
  • [论文阅读] 人工智能 + 软件工程 | ReCode:解决LLM代码修复“贵又慢”!细粒度检索+真实基准让修复准确率飙升
  • 【序列晋升】27 Spring Cloud Sleuth给分布式系统装上透视镜
  • 彩笔运维勇闯机器学习--逻辑回归
  • JavaScript手录进阶01-跨域问题
  • Diamond基础3:在线逻辑分析仪Reveal的使用
  • 用AI做旅游攻略,真能比人肉整理靠谱?
  • iOS 上架 uni-app 流程全解析,从打包到发布的完整实践
  • LabVIEW软件全面解析:图形化编程的工业级应用指南
  • RL 大模型逆袭!搞定真实软件工程任务,成功率从 20% 飙到 39%,无需教师模型蒸馏
  • 如何将华为手机数据转移到OPPO手机
  • 2004-2023年各省生活垃圾无害化处理率数据(无缺失)
  • 07、上传jar包到 Linux 并启动项目
  • 9月3日星期三今日早报简报微语报早读
  • 深入解析Java Spliterator(Stream延迟、并行计算核心)
  • TensorFlow的Yes/No 关键词识别模型训练
  • LVGL9.3 vscode 模拟环境搭建
  • 多层环境室内定位系统综述总结
  • 如何获取easy-ui的表格的分页大小
  • VRRP协议
  • Deformable 3D Gaussians:把动态场景装进“可变形的静态世界”
  • 技术重构人力管理 —— 打造人力资源流程自动化、智能化专业服务方案
  • 解决git无法连接github
  • 打破信息洪流:微算法科技(NASDAQ:MLGO)推出一种移动互联网环境下数字媒体热点挖掘算法
  • 什么是量子计算?