Ich habe eine CSV-Datei mit vier Spalten. Jede Zeile in der ersten Spalte enthält einen Tweet und die zweite Spalte enthält das entsprechende Label (das ist einer der Buchstaben - A/N/Q/S -, die jeweils Actionable/Non-Actionable/Query/Suggestion darstellen). Die zweite Spalte enthält also grundsätzlich die Zielklasse.Pandas read_csv lädt Daten in die falschen Spalten
Die dritte und vierte Spalte sind noch nicht relevant.
Ich implementiere den Decision Tree Classifier.
Das Problem ist, dass der Klassifikator auch einige der Tweets als Etiketten behandelt. In der vorhergesagten Ausgabe, während ich eigentlich nur A, N, Q oder S hätte bekommen sollen, bekomme ich auch Tweets mit diesen Labels.
Nach dem Klassifikator-Code ist: dtree_csv.py
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_iris
from sklearn.cross_validation import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.decomposition import PCA
import numpy as np
import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer
try:
df = pd.read_csv('tweet-class1.csv', header=None, sep=',',names=['tweets', 'class', 'dept', 'reply'],encoding='UTF-7',skipinitialspace=True) # columns names if no header
vect = TfidfVectorizer()
x = vect.fit_transform(df['tweets'].values.astype('U'))
y = df['class']
SIZE=50
STEP=.02
train,test,train_lab,test_lab=train_test_split(x,y,test_size=.15,random_state=100)
clf=DecisionTreeClassifier()
clf.fit(train,train_lab)
output = clf.predict(test)
for row in output:
print row
print accuracy_score(test_lab,output)
except UnicodeDecodeError as e:
print 'unicode error'
Am laufenden dtree_csv.py
, ist dies die Ausgabe-I auf dem Terminal sehen.
Ich habe eine Menge Dinge ausprobiert:
- verschiedene Kombinationen von Separatoren und Trennzeichen
- TSV anstelle von CSV
- Re-Import der ursprünglichen .xls-Datei in CSV
- Umschalten der Codierung zwischen UTF-7 und UTF-8
- Manuelles Scannen der CSV-Datei nach fehlerhaften Tweets
Nichts scheint zu funktionieren. Bitte lassen Sie mich wissen, was ich vermisse.