上一部的代码
时间: 2023-07-10 11:15:10 浏览: 61
下面是基于Python实现的数据预处理代码,包括数据清洗、数据归一化和数据标准化等:
```python
import pandas as pd
import numpy as np
from sklearn.preprocessing import MinMaxScaler, StandardScaler
# 1. 数据清洗
data = pd.read_csv('tourist_preference.csv')
data = data.drop_duplicates() # 删除重复值
data = data.dropna() # 删除缺失值
data = data.drop(['User ID'], axis=1) # 删除用户ID属性
# 2. 数据归一化(使用MinMaxScaler)
scaler = MinMaxScaler()
data_norm = scaler.fit_transform(data)
# 3. 数据标准化(使用StandardScaler)
scaler = StandardScaler()
data_std = scaler.fit_transform(data)
```
接下来,我们可以使用K-Means聚类算法对数据进行分析。我们可以采用肘部法则(Elbow Method)来确定聚类簇数。
```python
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
# 利用肘部法则确定聚类簇数
wcss = []
for i in range(1, 11):
kmeans = KMeans(n_clusters=i, init='k-means++', max_iter=300, n_init=10, random_state=0)
kmeans.fit(data_norm)
wcss.append(kmeans.inertia_)
plt.plot(range(1, 11), wcss)
plt.title('Elbow Method')
plt.xlabel('Number of clusters')
plt.ylabel('WCSS')
plt.show()
```
根据肘部法则,我们可以选择聚类簇数为4。
最后,我们可以使用K-Means算法进行聚类分析。
```python
# 使用K-Means算法进行聚类分析
kmeans = KMeans(n_clusters=4, init='k-means++', max_iter=300, n_init=10, random_state=0)
pred_y = kmeans.fit_predict(data_norm)
# 将聚类结果添加到原始数据中
data['Cluster'] = pred_y
# 输出每个聚类簇的样本数量
print(data['Cluster'].value_counts())
```
根据聚类结果,我们可以统计出每个聚类簇的样本数量。