K 表示绘图未正确显示
K Means plot not showing properly
我正在尝试可视化 K-Means clustering implementation on the Divorce dataset from UCI Machine Learning Repository 的结果。
我的代码如下:
import pandas as pd, seaborn as sns1
import matplotlib.pyplot as plt
from scipy import cluster
from sklearn.cluster import KMeans
from sklearn.model_selection import train_test_split
df = pd.read_csv('C:\Users\wundermahn\Desktop\code\divorce.csv')
y = df['Class']
X = df.drop('Class', axis=1)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)
y_pred = KMeans(n_clusters=2, random_state=170).fit_predict(X_test)
plt.subplot(221)
plt.scatter(X_test[:, 0], X_test[:, 1], c=y_pred)
plt.title("Guess")
plt.show()
这在很大程度上受到了上述 hyperlink K-Means link 的影响。
我收到一个错误:
Traceback (most recent call last):
File "c:\Users\wundermahn\Desktop\code\kmeans.py", line 25, in <module>
plt.scatter(X_test[:, 0], X_test[:, 1], c=y_pred)
File "C:\Python367-64\lib\site-packages\pandas\core\frame.py", line 2800, in __getitem__
indexer = self.columns.get_loc(key)
File "C:\Python367-64\lib\site-packages\pandas\core\indexes\base.py", line 2646, in get_loc
return self._engine.get_loc(key)
File "pandas\_libs\index.pyx", line 111, in pandas._libs.index.IndexEngine.get_loc
File "pandas\_libs\index.pyx", line 116, in pandas._libs.index.IndexEngine.get_loc
TypeError: '(slice(None, None, None), 0)' is an invalid key
我做错了什么?为什么我的切片是 None
类型,而我明明在向它传递数据?
plt.scatter
期望 x
和 y
为 array_like。显然,对于此函数,数据框不是数组。
如果您将 X
或 plt_scatter
的输入转换为 Numpy 数组,它应该可以工作。
import pandas as pd, seaborn as sns1
import matplotlib.pyplot as plt
from scipy import cluster
from sklearn.cluster import KMeans
from sklearn.model_selection import train_test_split
import numpy as np
df = pd.read_csv('divorce.csv', sep=';')
y = df['Class']
X = np.array(df.drop('Class', axis=1))
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)
y_pred = KMeans(n_clusters=2, random_state=170).fit_predict(X_test)
plt.subplot(221)
plt.scatter(X_test[:, 0], X_test[:, 1], c=y_pred)
plt.title("Guess")
plt.show()
我正在尝试可视化 K-Means clustering implementation on the Divorce dataset from UCI Machine Learning Repository 的结果。
我的代码如下:
import pandas as pd, seaborn as sns1
import matplotlib.pyplot as plt
from scipy import cluster
from sklearn.cluster import KMeans
from sklearn.model_selection import train_test_split
df = pd.read_csv('C:\Users\wundermahn\Desktop\code\divorce.csv')
y = df['Class']
X = df.drop('Class', axis=1)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)
y_pred = KMeans(n_clusters=2, random_state=170).fit_predict(X_test)
plt.subplot(221)
plt.scatter(X_test[:, 0], X_test[:, 1], c=y_pred)
plt.title("Guess")
plt.show()
这在很大程度上受到了上述 hyperlink K-Means link 的影响。
我收到一个错误:
Traceback (most recent call last):
File "c:\Users\wundermahn\Desktop\code\kmeans.py", line 25, in <module>
plt.scatter(X_test[:, 0], X_test[:, 1], c=y_pred)
File "C:\Python367-64\lib\site-packages\pandas\core\frame.py", line 2800, in __getitem__
indexer = self.columns.get_loc(key)
File "C:\Python367-64\lib\site-packages\pandas\core\indexes\base.py", line 2646, in get_loc
return self._engine.get_loc(key)
File "pandas\_libs\index.pyx", line 111, in pandas._libs.index.IndexEngine.get_loc
File "pandas\_libs\index.pyx", line 116, in pandas._libs.index.IndexEngine.get_loc
TypeError: '(slice(None, None, None), 0)' is an invalid key
我做错了什么?为什么我的切片是 None
类型,而我明明在向它传递数据?
plt.scatter
期望 x
和 y
为 array_like。显然,对于此函数,数据框不是数组。
如果您将 X
或 plt_scatter
的输入转换为 Numpy 数组,它应该可以工作。
import pandas as pd, seaborn as sns1
import matplotlib.pyplot as plt
from scipy import cluster
from sklearn.cluster import KMeans
from sklearn.model_selection import train_test_split
import numpy as np
df = pd.read_csv('divorce.csv', sep=';')
y = df['Class']
X = np.array(df.drop('Class', axis=1))
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)
y_pred = KMeans(n_clusters=2, random_state=170).fit_predict(X_test)
plt.subplot(221)
plt.scatter(X_test[:, 0], X_test[:, 1], c=y_pred)
plt.title("Guess")
plt.show()