机器学习——线性回归

线性回归

任务:基于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

相关推荐
DeepVisionary5 小时前
谷歌 Gemini Omni 1.1 Flash 正式发布:4K 视频、40 秒场景延伸,视频生成进入按 token 计费时代
python·自动化
阡之尘埃5 小时前
Python数据分析案例85——大模型微调全流程(SFT的LoRA微调)
人工智能·python·深度学习·语言模型·llm·微调·千问
海兰5 小时前
【应用】基于 Next.js 16 + Python mplfinance的金融K线图与技术指标可视化平台(三)
javascript·python·金融
cvcode_study6 小时前
Ollama+ComfyUI 多模态
大数据·人工智能·python
这张生成的图像能检测吗6 小时前
(论文速读)SubspaceAD:用 PCA 子空间做 Training-Free Few-Shot 异常检测
人工智能·机器学习·pca·异常检测·少样本学习
浪兎兎7 小时前
【机器学习】高斯分布 高斯混合模型
机器学习·高斯分布
星核0penstarry7 小时前
试一试用gr.Workflow把AI多步骤串联变成可视化画布
人工智能·python·ai作画·api·ai编程·工作流·api聚合平台
taller_20007 小时前
【005】PiE 与传统 VBA 的核心区别
python·vba·pie·py
海兰7 小时前
【应用】基于 Next.js 16 + Python mplfinance的金融K线图与技术指标可视化平台(一)
javascript·python·金融
大衛說7 小时前
《Python 从入门到精通》系列总览与学习路线
开发语言·python·学习