针对scikit-learn中的糖尿病数据集,利用Python实现基于统计机器学习的数据回归分析,并对数据以及结果进行分析及可视化
时间: 2024-12-13 20:19:02 浏览: 7
在scikit-learn库中,有一个名为diabetes的数据集,它包含了美国健康与营养调查中糖尿病患者的相关生理指标数据。要进行基于统计机器学习的数据回归分析,我们可以按照以下步骤进行:
1. **导入必要的库**:
```python
import numpy as np
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
import matplotlib.pyplot as plt
```
2. **加载糖尿病数据集**:
```python
diabetes = datasets.load_diabetes()
X = diabetes.data
y = diabetes.target
```
3. **数据预处理**:
分割数据集为训练集和测试集,通常比例可以是80%训练,20%测试。
```python
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
```
4. **选择模型(这里使用线性回归为例)**:
```python
model = LinearRegression()
model.fit(X_train, y_train)
```
5. **预测并评估模型**:
对测试集进行预测,计算均方误差(MSE)和R²分数。
```python
y_pred = model.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
print(f"MSE: {mse}, R² Score: {r2}")
```
6. **可视化结果**:
可视化真实值与预测值的关系,如散点图和残差图。
```python
plt.scatter(y_test, y_pred)
plt.xlabel('True Values')
plt.ylabel('Predicted Values')
plt.title("Linear Regression Predictions vs Actuals")
plt.show()
fig, ax = plt.subplots(figsize=(10, 6))
ax.hist((y_test - y_pred), bins='auto', edgecolor='black')
plt.title('Residuals Plot')
plt.xlabel('Residuals')
plt.ylabel('Frequency')
plt.axvline(0, color='red', linestyle='dashed')
plt.show()
```
在这个过程中,你可以尝试其他回归模型(如决策树、随机森林等),看看它们的表现如何,并对比不同模型之间的效果。
阅读全文