我正在Scikit-Learn中進行多類文本分類。該數據集正在使用具有數百個標籤的Multinomial樸素貝葉斯分類器進行訓練。下面是來自Scikit提取了解腳本用於安裝MNB模型scikit將輸出metrics metrics.classification_report轉換爲CSV /製表符分隔格式
from __future__ import print_function
# Read **`file.csv`** into a pandas DataFrame
import pandas as pd
path = 'data/file.csv'
merged = pd.read_csv(path, error_bad_lines=False, low_memory=False)
# define X and y using the original DataFrame
X = merged.text
y = merged.grid
# split X and y into training and testing sets;
from sklearn.cross_validation import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=1)
# import and instantiate CountVectorizer
from sklearn.feature_extraction.text import CountVectorizer
vect = CountVectorizer()
# create document-term matrices using CountVectorizer
X_train_dtm = vect.fit_transform(X_train)
X_test_dtm = vect.transform(X_test)
# import and instantiate MultinomialNB
from sklearn.naive_bayes import MultinomialNB
nb = MultinomialNB()
# fit a Multinomial Naive Bayes model
nb.fit(X_train_dtm, y_train)
# make class predictions
y_pred_class = nb.predict(X_test_dtm)
# generate classification report
from sklearn import metrics
print(metrics.classification_report(y_test, y_pred_class))
和命令行屏幕上的metrics.classification_report的簡化輸出如下:
precision recall f1-score support
12 0.84 0.48 0.61 2843
13 0.00 0.00 0.00 69
15 1.00 0.19 0.32 232
16 0.75 0.02 0.05 965
33 1.00 0.04 0.07 155
4 0.59 0.34 0.43 5600
41 0.63 0.49 0.55 6218
42 0.00 0.00 0.00 102
49 0.00 0.00 0.00 11
5 0.90 0.06 0.12 2010
50 0.00 0.00 0.00 5
51 0.96 0.07 0.13 1267
58 1.00 0.01 0.02 180
59 0.37 0.80 0.51 8127
7 0.91 0.05 0.10 579
8 0.50 0.56 0.53 7555
avg/total 0.59 0.48 0.45 35919
我在想,如果有任何將報表輸出轉換爲標準csv文件並使用常規列標題的方法
當我將命令行輸出發送到csv文件或試圖將屏幕輸出複製/粘貼到電子表格中時 - OpenOffice Calc或Excel,將結果歸因於一個列。這樣看:
幫助表示讚賞。謝謝!
我會試圖重新的結果,因爲我鍵入此,但具有u嘗試使用熊貓旋轉工作臺成數據幀,然後發送數據幀到csv使用'dataframe_name_here.to_csv()'? 您是否也可以顯示將結果寫入csv的代碼? – MattR
@MattR我編輯了這個問題,並提供了完整的Python代碼...我將腳本的輸出從Linux命令行傳遞給一個CSV文件:$ python3 script.py> result.csv –