对新的线性 SVM 数据帧进行分类时出错
Error when classifying new Linear SVM dataframe
我使用线性 SVM 创建了一个多 class class 化模型。但是我无法 class 验证新加载的数据框(我的基础必须 class 验证)我有以下错误。
我应该怎么做才能将我的新文本 (df.reason_text) 转换为 TFID 并使用我的模型 classify(调用 model.prediction(?))?
训练模型
from sklearn.feature_extraction.text import TfidfVectorizer
tfidf = TfidfVectorizer(ngram_range=(1,2), stop_words=stopwords)
features = tfidf.fit_transform(training.Description).toarray()
labels = training.category_id
model = LinearSVC()
X_train, X_test, y_train, y_test, indices_train, indices_test = train_test_split(features, labels, training.index, test_size=0.33, random_state=0)
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
现在我无法将我的新数据框转换为 classify
按分类加载新 DataFrame
from pyathena import connect
import pandas as pd
conn = connect(s3_staging_dir='s3://athenaxxxxxxxx/result/',
region_name='us-east-2')
df = pd.read_sql("select * from data.classification_text_reason", conn)
features2 = tfidf.fit_transform(df.reason_text).toarray()
features2.shape
在我使用 TFID 转换新数据框文本并对其进行排序后,我收到以下消息
y_pred1 = model.predict(features2)
错误
ValueError: X has 1272 features per sample; expecting 5319
'
当您加载新的 DF 进行分类时,您将再次调用 fit_tranform(),但您应该只调用 transform()。
fit_transform() description: Learn vocabulary and idf, return term-document matrix.
变换() description: Transform documents to document-term matrix.
您需要使用训练算法时创建的转换器,因此代码为:
tfidf.transform(df.reason_text).toarray()
如果仍然存在特征形状错误,则阵列的形状可能有问题。解决transform部分,如果还是报错,post一个train的例子和数组格式的测试数据,我会继续帮助。
我使用线性 SVM 创建了一个多 class class 化模型。但是我无法 class 验证新加载的数据框(我的基础必须 class 验证)我有以下错误。
我应该怎么做才能将我的新文本 (df.reason_text) 转换为 TFID 并使用我的模型 classify(调用 model.prediction(?))?
训练模型
from sklearn.feature_extraction.text import TfidfVectorizer
tfidf = TfidfVectorizer(ngram_range=(1,2), stop_words=stopwords)
features = tfidf.fit_transform(training.Description).toarray()
labels = training.category_id
model = LinearSVC()
X_train, X_test, y_train, y_test, indices_train, indices_test = train_test_split(features, labels, training.index, test_size=0.33, random_state=0)
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
现在我无法将我的新数据框转换为 classify
按分类加载新 DataFrame
from pyathena import connect
import pandas as pd
conn = connect(s3_staging_dir='s3://athenaxxxxxxxx/result/',
region_name='us-east-2')
df = pd.read_sql("select * from data.classification_text_reason", conn)
features2 = tfidf.fit_transform(df.reason_text).toarray()
features2.shape
在我使用 TFID 转换新数据框文本并对其进行排序后,我收到以下消息
y_pred1 = model.predict(features2)
错误
ValueError: X has 1272 features per sample; expecting 5319
'
当您加载新的 DF 进行分类时,您将再次调用 fit_tranform(),但您应该只调用 transform()。
fit_transform() description: Learn vocabulary and idf, return term-document matrix.
变换() description: Transform documents to document-term matrix.
您需要使用训练算法时创建的转换器,因此代码为:
tfidf.transform(df.reason_text).toarray()
如果仍然存在特征形状错误,则阵列的形状可能有问题。解决transform部分,如果还是报错,post一个train的例子和数组格式的测试数据,我会继续帮助。