Я хочу попробовать реализовать LDA или КПК в sklearn, но в данных есть строка
#topic will be change to number using label encoder, get extract from the file
topics = [
'computer_graphics',
'operating_systems',
'computer_security',
'application_service',
'computer_software',
'artificial_intelligence',
'search_engine',
'information_society',
]
df = pd.DataFrame(
docs,
columns=["topic","body"],
dtype="category"
)
tagger = MeCab.Tagger("-Owakati")
def parse_to_wakati(text):
return tagger.parse(text).strip()
df = df.assign(body_wakati=df.body.apply(parse_to_wakati))
le = LabelEncoder()
y = le.fit_transform(df.topic)
X_train, X_test, y_train, y_test = train_test_split(
df.body_wakati, #data
y, #here the y is classification
test_size=0.2,
random_state=10,
shuffle=True
)
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
X_train = sc.fit_transform(pipeline.fit(X_train)) ->error
X_test = sc.transform(X_test)
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis as LDA
lda = LDA(n_components=1)
X_train = lda.fit_transform(X_train, y_train)
X_test = lda.transform(X_test)
from sklearn.ensemble import RandomForestClassifier
classifier = RandomForestClassifier(max_depth=2, random_state=0)
classifier.fit(X_train, y_train)
y_pred = classifier.predict(X_test)
я получил:
Невозможно центрировать разреженные матрицы: вместо этого передайте with_mean=False
. См. Docstring для мотивации и альтернатив.
или
ValueError: не удалось преобразовать строку в число с плавающей точкой: 'お 気 に 入 り の Ubuntu: 無償 OS & amp; う ソ フ ト で 何 で も 揃 う! : 10 04 LTS 日本語 Remix 版 '
обычно для реализации другого алгоритма, я использую конвейер
from sklearn.svm import LinearSVC
svm_clf = Pipeline([
("tfidf", TfidfVectorizer()),
("clf", LinearSVC()),
])
svm_clf.fit(X_train, y_train)
pred = svm_clf.predict(X_test)
Я также пытался подгонять и преобразовывать вручную, как vect = CountVectorizer ()
tfidf = TfidfTransformer()
vX = vect.fit_transform(X_train)
tfidfX = tfidf.fit_transform(vX)
X_train = sc.fit_transform(tfidfX) ->error too
X_train данные для справки