请仔细阅读右侧代码,结合相关知识,在 Begin-End 区域内进行代码补充,完使用 sklearn 中的K-means模型实现红酒聚类任务。
时间: 2024-12-02 20:14:45 浏览: 35
当然,首先你需要安装`sklearn`库,如果还没有安装,可以使用以下命令:
```bash
pip install -U scikit-learn
```
接下来,假设你已经有了红酒数据集(例如wine_data.csv),并且已经读取到DataFrame `df`,我们可以按照以下步骤使用K-means模型进行聚类:
```python
import pandas as pd
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler
# 1. 加载并预处理数据
df_red_wine = pd.read_csv('wine_data.csv') # 假设这是红酒数据文件路径
# 提取特征列
X = df_red_wine.drop('class', axis=1) # 假设最后一列是类别标签
# 2. 数据标准化
scaler = StandardScaler() # 创建标准 scaler 对象
X_scaled = scaler.fit_transform(X) # 标准化数值型特征
# 3. 定义KMeans模型并设置初始簇中心数量
k = 3 # 假设你想分为3个群组
kmeans = KMeans(n_clusters=k, init='k-means++', random_state=42)
# 4. 训练模型
kmeans.fit(X_scaled)
# 5. 预测聚类结果
labels = kmeans.labels_ # 获取每个样本的聚类标签
# 输出开始-结束区域的代码补全部分
Begin:
# 保存聚类结果
cluster_df = pd.DataFrame({'data': X.index, 'cluster': labels})
cluster_df.to_csv('red_wine_clusters.csv', index=False)
# 绘制聚类结果
plt.scatter(X_scaled[:, 0], X_scaled[:, 1], c=labels)
plt.title(f"K-Means Clustering of Red Wine Data (n_clusters={k})")
plt.xlabel("Feature 1")
plt.ylabel("Feature 2")
plt.show()
End:
# 相关问题--
1. 如果我们不知道最佳的簇中心数量k,如何选择呢?
2. 除了K-means++,还有哪些常用的初始化方法?
3. 数据标准化对K-means的影响是什么?>>
阅读全文