机器学习——线性回归

线性回归

任务:基于0428.xlsx文件,建立线性回归模型,预测x = 3.5时对应的y值,评估模型表现

python 复制代码
# 加载数据
import pandas as pd
data = pd.read_excel('0428.xlsx')
data.head()

# data赋值
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.xlabel('x')
plt.ylabel('y')
plt.title('Scatter Plot of x and 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)
y = np.array(y)
y = y.reshape(-1, 1)

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

# 检查预测是否准确(比较原数据和预测数据)
y_predict = lr_model.predict(x)
print(y_predict)

# 完成任务要求(3.5处的y,模型表现)
y_3_5 = lr_model.predict([[3.5]])
print(y_3_5)

# 计算最小二乘法里的a和b
a = lr_model.coef_
b = lr_model.intercept_
print(f'a: {a}, b: {b}')

# MSE以及R²分数(MSE越小越好,R²分数越接近1越好)
from sklearn.metrics import mean_squared_error, r2_score
mse = mean_squared_error(y, y_predict)
r2 = r2_score(y, y_predict)
print(f'MSE: {mse}, R² Score: {r2}')

# 画出y和y_predict的散点图
plt.figure(figsize=(3, 3))    
plt.scatter(y, y_predict)
plt.xlabel('Actual y')
plt.ylabel('Predicted y')
plt.title('Actual vs Predicted y')
plt.show()

多因子线性回归实战------------房价预测

建立线性回归模型,预测合理放假

(1) 以RM为输入变量,建立单因子模型,评估模型表现,可视化线性回归预测结果

(2) 以RM,LSTAT,PTRATIO为输入变量,建立多因子模型,评估模型表现

(3) 预测RM = 7,LSTAT=11,PTRATIO=20时的合理房价

python 复制代码
# 加载数据
import pandas as pd
data = pd.read_csv('housing.csv')
data.head()

# 多个图画在一起,观察不同特征与房价的关系
from matplotlib import pyplot as plt
plt.figure(figsize=(12, 5))
plt.subplot(1, 3, 1)
plt.scatter(data['RM'], data['MEDV'])
plt.xlabel('RM')
plt.ylabel('MEDV')
plt.title('RM vs MEDV')
plt.subplot(1, 3, 2)
plt.scatter(data['LSTAT'], data['MEDV'])
plt.xlabel('LSTAT')
plt.ylabel('MEDV')
plt.title('LSTAT vs MEDV')
plt.subplot(1, 3, 3)
plt.scatter(data['PTRATIO'], data['MEDV'])
plt.xlabel('PTRATIO')
plt.ylabel('MEDV')
plt.title('PTRATIO vs MEDV')
plt.show()

# 训练数据的赋值
X = data.loc[:,'RM']
Y = data.loc[:,'MEDV']

# 建立单因子模型
from sklearn.linear_model import LinearRegression
LR1 = LinearRegression()

# 数组维度转换
X = np.array(X)
X = X.reshape(-1, 1)
Y = np.array(Y)
Y = Y.reshape(-1, 1)

# 模型训练
LR1.fit(X, Y)

# 计算最小二乘法里的a和b
a = LR1.coef_
b = LR1.intercept_
print(f'a: {a}, b: {b}')

# MSE以及R²分数(MSE越小越好,R²分数越接近1越好)
from sklearn.metrics import mean_squared_error, r2_score
Y_predict = LR1.predict(X)
mse = mean_squared_error(Y, Y_predict)
r2 = r2_score(Y, Y_predict)
print(f'MSE: {mse}, R² Score: {r2}')

# 画图
plt.figure(figsize=(3, 3))
plt.scatter(Y, Y_predict)
plt.xlabel('Actual Y')
plt.ylabel('Predicted Y')   
plt.title('Actual vs Predicted Y')
plt.show()

# 多因子线性模型
x_multi = data.drop(['MEDV'], axis=1)

# 建立多因子线性模型
LR_multi = LinearRegression()

# 模型训练
LR_multi.fit(x_multi, Y)

# MSE以及R²分数(MSE越小越好,R²分数越接近1越好)
Y_multi_predict = LR_multi.predict(x_multi)
mse = mean_squared_error(Y, Y_multi_predict)
r2 = r2_score(Y, Y_multi_predict)
print(f'MSE: {mse}, R² Score: {r2}')

# 获取所有特征的系数
coefficients = LR_multi.coef_
print("各因子的系数:", coefficients)

# 任务三:预测RM = 7,LSTAT=11,PTRATIO=20时的合理房价
X_test = [[7, 11, 20]]
X_test = np.array(X_test).reshape(1, -1)
Y_test_predict = LR_multi.predict(X_test)
print(f'预测的房价: {Y_test_predict}')

数据集可在主页查找

数据集2:

https://gitee.com/baiyunyi/udacity-mlnd-boston-housing/tree/master

相关推荐
程序员杰哥9 分钟前
Python+requests+excel 接口自动化测试框架
自动化测试·软件测试·python·测试工具·测试用例·excel·接口测试
schinber11 分钟前
uv源怎么配置
python·uv
wuxinyan12315 分钟前
工业级大模型学习之路018:LangChain零基础入门教程(第一篇):LangChain架构与生态介绍
人工智能·python·学习·langchain
Chase_______24 分钟前
【Java基础核心知识点全解·01】Java运行机制详解:从 HelloWorld 到 classpath 找类流程
java·开发语言·python
ECT-OS-JiuHuaShan25 分钟前
什么是认知,认知的本质是什么?
数据库·人工智能·算法·机器学习·数学建模
噜噜噜阿鲁~26 分钟前
python学习笔记 | 11.0、面向对象高级编程
笔记·python·学习
li星野27 分钟前
从 BPE 分词到位置编码:大模型预处理三组件完全解析
python·transformer
枫叶林FYL2 小时前
【机器学习与智慧医疗】T2DM-EWS: 2型糖尿病早期预警系统(多参数集成分类模型)完整实现
人工智能·机器学习·分类
石榴树下的七彩鱼2 小时前
图片去水印 API 详解:从单图到批量自动化去水印(附 Python/JS/PHP 完整教程)
python·自动化·图片处理·图片去水印·石榴智能·api教程
Li emily9 小时前
解决了加密货币api多币种订阅时的数据乱序问题
人工智能·python·api·fastapi