我有一个.json文件作为类型的数据集:
我正在研究一个分类问题,我必须预测 4 个类别,它们是语义的。我已经解决了这个问题,在将 dtataset 拆分为训练集和测试集后,我得到了.我有一个不平衡的数据集,所以我对它进行了过采样:
我的代码如下:
dataFrame = pd.read_json('dataset.json',lines = True)
df = dataFrame[["lista_asm", "semantic"]].copy()
from sklearn.feature_extraction.text import TfidfVectorizer
tfidf_vectorizer=TfidfVectorizer()
df_x = df['lista_asm']
X_all = tfidf_vectorizer.fit_transform(df_x)
y_all = df['semantic']
#oversampling
from imblearn.over_sampling import RandomOverSampler
ros = RandomOverSampler()
X_ros, y_ros = ros.fit_sample(X_all, y_all)
print(X_ros.shape[0] - X_all.shape[0], 'new random picked points')
#splitting
X_train, X_test, y_train, y_test = train_test_split(X_ros, y_ros,
test_size=0.2, random_state=15)
from sklearn import svm
from sklearn.model_selection import cross_val_score
from sklearn.ensemble import RandomForestClassifier
#fitting the model
clf = svm.SVC(kernel='linear', C=10).fit(X_train,y_train)
y_pred = clf.predict(X_test)
#checking accuracy
acc = clf.score(X_test, y_test)
print("Accuracy %.3f" %acc) #from here I get accuracy 1
我没有编写导入以避免在此处使代码过长,但如果需要,我可以添加它们。
所以我没有在训练集上进行测试,但是结果太好了,所以肯定有什么问题。我不明白出了什么问题。
这是出于任何特定原因而发生的事情吗?
我试图更改一些东西以使代码变得更糟,以查看准确性是否会下降,但它仍然是一个。
[编辑]我已经尝试使用你的建议,我已经很抱歉,因为我肯定做错了什么。
这是我所做的:
X_all = df['lista_asm']
y_all = df['semantic']
X_train, X_test, y_train, y_test = train_test_split(X_all, y_all,
test_size=0.2, random_state=15)
tf = TfidfVectorizer(analyzer='word', ngram_range=(1,2), lowercase = True,
max_features = 20000)
tf_transformer = tf.fit(X_train)
xtrain = tf.fit_transform(X_train)
from sklearn import svm
from sklearn.model_selection import cross_val_score
from sklearn.ensemble import RandomForestClassifier
clf = svm.SVC(kernel='linear', C=10).fit(xtrain,y_train)
tf2=TfidfVectorizer(analyzer='word', ngram_range=(1,2), lowercase = True,
max_features = 20000)
tf_transformer = tf2.fit(X_test)
X_test = tf2.fit_transform(X_test)
y_pred = clf.predict(X_test)
acc = clf.score(X_test, y_test)
print("Accuracy %.3f" %acc) #gives accuracy 0.277
如果我绘制其他性能指标:
带有以下消息:
UndefinedMetricWarning:精度和 F 分数定义不明确,在没有预测样本的标签中设置为 0.0。使用
zero_division参数来控制此行为。_warn_prf(平均值,修饰符,msg_start,len(结果))
[编辑]我也尝试使用相同的方法,但使用.jsonl文件,在这种情况下,它可以很好地提供合理的准确性。也许这样做是错误的,但问题可能就在这里,所以我没有正确处理 .json 文件吗?
有人能帮帮我吗?










