在 sklearn 中训练多个 class
Train multiple class in sklearn
i have data frame like this picture.
我正在寻找一种方法来训练这个数据集,所以我用这段代码尝试了 sklearn
train_x, test_x, train_y, test_y = train_test_split(df[['city','text']], df[['1','2','3','4']], test_size = 0.40, random_state = 21)
count_vect = CountVectorizer(analyzer='word', ngram_range=(2,3), max_features=20000)
count_vect.fit(df['text'])
x_train = count_vect.transform(train_x)
x_test = count_vect.transform(test_x)
classifier = DecisionTreeClassifier()
classifier.fit(x_train, train_y)
但我遇到了这样的错误
ValueError: Number of labels=2348 does not match number of samples=1
其实我不知道是否可以直接用它的 4 个标签训练我的数据
错误是因为输入X
的形状应该是[n_samples, n_features]
。如果检查 X
的形状,应该是 (2348, )。
将X
改造为
的最佳方式
X = X[:, np.newaxis]
错误是由于行:
x_train = count_vect.transform(train_x)
你看,你的 train_x
和 test_x
有两列(来自 df[['city','text']]
),但 CountVectorizer
只适用于单列。它只需要一个可迭代的字符串,而不是更多。所以你这样做是对的:
count_vect.fit(df['text'])
因为您只提供了一个列。但是当您在 count_vect.transform(train_x)
中提供 train_x
时,count_vect
只采用列名而不是实际数据。
也许你想要:
x_train = count_vect.transform(train_x['text'])
i have data frame like this picture.
我正在寻找一种方法来训练这个数据集,所以我用这段代码尝试了 sklearn
train_x, test_x, train_y, test_y = train_test_split(df[['city','text']], df[['1','2','3','4']], test_size = 0.40, random_state = 21)
count_vect = CountVectorizer(analyzer='word', ngram_range=(2,3), max_features=20000)
count_vect.fit(df['text'])
x_train = count_vect.transform(train_x)
x_test = count_vect.transform(test_x)
classifier = DecisionTreeClassifier()
classifier.fit(x_train, train_y)
但我遇到了这样的错误
ValueError: Number of labels=2348 does not match number of samples=1
其实我不知道是否可以直接用它的 4 个标签训练我的数据
错误是因为输入X
的形状应该是[n_samples, n_features]
。如果检查 X
的形状,应该是 (2348, )。
将X
改造为
X = X[:, np.newaxis]
错误是由于行:
x_train = count_vect.transform(train_x)
你看,你的 train_x
和 test_x
有两列(来自 df[['city','text']]
),但 CountVectorizer
只适用于单列。它只需要一个可迭代的字符串,而不是更多。所以你这样做是对的:
count_vect.fit(df['text'])
因为您只提供了一个列。但是当您在 count_vect.transform(train_x)
中提供 train_x
时,count_vect
只采用列名而不是实际数据。
也许你想要:
x_train = count_vect.transform(train_x['text'])