请帮我完成100行左右的python代码,要求基于多元线性回归学习模型,输入是20个变量,输出是两个变量,你也可以做一下特征降维或者模型比较和可视化
时间: 2024-05-13 10:14:51 浏览: 95
python实现机器学习之多元线性回归
好的,下面是一个基于多元线性回归的示例代码:
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score, mean_squared_error
# 读取数据
data = pd.read_csv('data.csv')
# 特征选择
X = data.iloc[:, :-2].values
y = data.iloc[:, -2:].values
# 特征标准化
from sklearn.preprocessing import StandardScaler
X = StandardScaler().fit_transform(X)
# 特征降维
from sklearn.decomposition import PCA
pca = PCA(n_components=10)
X = pca.fit_transform(X)
# 训练集和测试集划分
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 模型训练
regressor = LinearRegression()
regressor.fit(X_train, y_train)
# 模型预测
y_pred = regressor.predict(X_test)
# 模型评估
print('R2 score:', r2_score(y_test, y_pred))
print('MSE:', mean_squared_error(y_test, y_pred))
# 模型可视化
plt.scatter(y_test[:, 0], y_pred[:, 0])
plt.plot([0, 1], [0, 1], '--k', transform=plt.gca().transAxes)
plt.xlabel('True values')
plt.ylabel('Predictions')
plt.title('Multiple Linear Regression')
plt.show()
```
这段代码的主要流程如下:
1. 导入必要的库:pandas 用于数据处理,numpy 用于数学计算,matplotlib 用于数据可视化,sklearn 中的相关模块用于机器学习。
2. 读取数据:从 csv 文件中读取数据。
3. 特征选择:将数据集分为特征和目标,其中特征是前 20 个变量,目标是后 2 个变量。
4. 特征标准化:将特征进行标准化处理,使其均值为 0,方差为 1。
5. 特征降维:使用 PCA 算法将高维特征降为 10 维。
6. 训练集和测试集划分:将数据集划分为训练集和测试集,其中测试集占总数据集的 20%。
7. 模型训练:使用 sklearn 中的 LinearRegression 模型进行训练。
8. 模型预测:使用训练好的模型进行预测。
9. 模型评估:计算 R2 score 和 MSE 两个指标来评估模型的性能。
10. 模型可视化:将测试集的真实值和预测值进行可视化,以观察模型的预测效果。
当然,这只是一个基础的代码示例,如果需要更加精细化的模型调参和特征工程,还需要根据具体问题进行修改。
阅读全文