模糊 C 均值中的验证错误
ValidationError in fuzzy-c-means
我已经尝试在 jupyter notebook 和 colab 中 运行,但 fcmeans 仍然出现此错误。
但它在不同的笔记本电脑上运行良好。
这是分割数据集的代码
# Stratified Sampling using Scikit-learn's Stratified Shuffle Split Class
from sklearn.model_selection import StratifiedShuffleSplit
split = StratifiedShuffleSplit(n_splits=1, test_size=0.25, random_state=42)
for train_index, test_index in split.split(data1, data1["class"]):
strat_train_set = data1.loc[train_index]
strat_test_set = data1.loc[test_index]
train_set = strat_train_set.drop("class", axis=1) # drop labels for training set
train_labels = strat_train_set["class"].copy()
test_set = strat_test_set.drop("class", axis=1) # drop labels for testing set
test_labels = strat_test_set["class"].copy()
那我错过了什么?
这里的问题是,tr_set
不是 numpy.ndarray
。因此,您需要做的就是将数据框作为 numpy 数组传递。
在您的情况下,如果在将数据传递给 fit
之前使用 to_numpy
函数(像这样 fcm.fit(tr_set.to_numpy())
),它将起作用。
从 fcm 文档中可以清楚地看出这一点。
我已经尝试在 jupyter notebook 和 colab 中 运行,但 fcmeans 仍然出现此错误。 但它在不同的笔记本电脑上运行良好。 这是分割数据集的代码
# Stratified Sampling using Scikit-learn's Stratified Shuffle Split Class
from sklearn.model_selection import StratifiedShuffleSplit
split = StratifiedShuffleSplit(n_splits=1, test_size=0.25, random_state=42)
for train_index, test_index in split.split(data1, data1["class"]):
strat_train_set = data1.loc[train_index]
strat_test_set = data1.loc[test_index]
train_set = strat_train_set.drop("class", axis=1) # drop labels for training set
train_labels = strat_train_set["class"].copy()
test_set = strat_test_set.drop("class", axis=1) # drop labels for testing set
test_labels = strat_test_set["class"].copy()
那我错过了什么?
这里的问题是,tr_set
不是 numpy.ndarray
。因此,您需要做的就是将数据框作为 numpy 数组传递。
在您的情况下,如果在将数据传递给 fit
之前使用 to_numpy
函数(像这样 fcm.fit(tr_set.to_numpy())
),它将起作用。
从 fcm 文档中可以清楚地看出这一点。