当前位置: 首页 > 知识库问答 >
问题:

支持向量机文本分类错误

萧飞
2023-03-14

我正在尝试应用文本排序算法,不幸的是,我有一个错误

import sklearn
import numpy as np
from sklearn import svm
from sklearn.pipeline import Pipeline
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import TfidfTransformer
from sklearn.metrics import precision_recall_fscore_support as score
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.multiclass import OneVsRestClassifier
from sklearn.metrics import accuracy_score
from sklearn import metrics
from sklearn.metrics import confusion_matrix
from sklearn.metrics import precision_recall_fscore_support
import pandas as pd
import pandas

dataset = pd.read_csv('train.csv', encoding = 'utf-8')
data = dataset['data']
labels = dataset['label']

X_train, X_test, y_train, y_test = train_test_split (data.data, labels.target, test_size = 0.2, random_state = 0)


vecteur = CountVectorizer()
X_train_counts = vecteur.fit_transform(X_train)

tfidf = TfidfTransformer()
X_train_tfidf = tfidf_transformer.fit_transform(X_train_counts)

clf = MultinomialNB().fit(X_train_tfidf, y_train)

#SVM
clf = svm.SVC(kernel = 'linear', C = 10).fit(X_train, y_train)
print(clf.score(X_test, y_test))

我有以下错误:

回溯(最近一次呼叫最后一次):

文件“bayes_classif.py”,第22行,在

数据集=pd。read_csv('train.csv',编码='utf-8')

文件“/usr/local/lib/python3.6/dist-packages/pandas/io/parsers.py”,第678行,在解析器中

返回读取(文件路径或缓冲区,kwds)

文件“/usr/local/lib/python3.6/dist-packages/pandas/io/parsers.py”,第446行,已读

数据=解析器。阅读(nrows)

文件"/usr/local/lib/python3.6/dist-包/熊猫/io/parsers.py",第1036行,读取

ret=自我_发动机阅读(nrows)

文件"/usr/local/lib/python3.6/dist-包/熊猫/io/parsers.py",第1848行,读取

数据=自我_读者阅读(nrows)

文件“pandas/_libs/parsers.pyx”,第876行,pandas格式_图书馆。解析器。文本阅读器。阅读

在熊猫中存档"熊猫/_libs/parsers.pyx",第891行。_libs.parsers.文本阅读器。_read_low_memory

文件“pandas/_libs/parsers.pyx”,第945行,pandas格式_图书馆。解析器。文本阅读器_读行

文件“pandas/_libs/parsers.pyx”,第932行,pandas格式_图书馆。解析器。文本阅读器_标记化行

在熊猫中归档"熊猫/_libs/parsers.pyx",第2112行。_libs.parsers.raise_parser_errorpandas.errors.ParserError:错误标记化数据。C错误:在第72行中预期2个字段,锯3

我的数据

data, label
bought noon <product> provence <product> shop givors moment <price> bad surprise <time> made account price <price> catalog expect part minimum refund difference wait read brief delay, refund

parcel ordered friend n still not arrive possible destination send back pay pretty unhappy act gift birth <date> status parcel n not moved weird think lost stolen share quickly solutions can send gift both time good <time>, call

ordered <product> coat recovered calais city europe shops n not used assemble parties up <time> thing done <time> bad surprise parties not aligned correctly can see photo can exchange made refund man, annulation

note <time> important traces rust articles come to buy acting carrying elements going outside extremely disappointed wish to return together immediately full refund indicate procedure sabrina beillevaire <phone_numbers>, refund

note <time> important traces rust articles come to buy acts acting bearing elements going outside extremely disappointed wish to return together immediately full refund indicate procedure <phone_numbers>, annulation

request refund box jewelry arrived completely broken box n not protected free delivery directly packaging plastic item fragile cardboard box <product> interior shot cover cardboard torn corners <product> completely broken, call

共有1个答案

劳夕
2023-03-14

你能试着用一个干净的代码重现同样的错误吗?你的包含一些错误和不必要的台词。我们还需要您的数据样本,以帮助重现错误,否则我们将无法提供帮助。

以下是我假设您正在尝试执行的操作,请尝试使用您的数据启动它,并告诉我们您是否仍然获得相同的错误:

import pandas as pd
from sklearn import svm
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import CountVectorizer, TfidfTransformer

dataset = pd.DataFrame({'data':['A first sentence','And a second sentence','Another one','Yet another line','And a last one'],
                    'label':[1,0,0,1,1]})
data = dataset['data']
labels = dataset['label']

X_train, X_test, y_train, y_test = train_test_split (data, labels, test_size = 0.2, random_state = 0)


vecteur = CountVectorizer()
tfidf = TfidfTransformer()

X_train_counts = vecteur.fit_transform(X_train)
X_train_tfidf = tfidf.fit_transform(X_train_counts)
X_test_tfidf = tfidf.transform(vecteur.transform(X_test))

clf = svm.SVC(kernel = 'linear', C = 10).fit(X_train_tfidf, y_train)
print(clf.score(X_test_tfidf, y_test))

编辑:

根据您的数据,错误可能是由于csv文件中的逗号字符,导致熊猫解析器出错。您可以通过使用read_csv中的erro_bad_lines参数告诉熊猫忽略这些行。下面是一个简短的例子:

temp=u"""data, label
A first working line, refund
a second ok line, call
last line with an inside comma: , character which makes it bug, call"""
df = pd.read_csv(pd.compat.StringIO(temp),error_bad_lines=False)
 类似资料:
  • 选取出关键特征 通过tf-idf计算出来的数值是某个特征(词)对于这篇文档的权重,不代表这个特征(词)在文本分类中的权重。这很容易理解,比如某一个特征(词)在多个分类中的tf-idf是不一样的,但是这个特征对于这个分类问题的权重肯定是一个定值。 选取重要的特征的方法可以是:1.)按tf-idf排序从大到小选topN;2)按特征的普遍性选取(在多个类别中出现过);3)按特征在不同文档中tf-idf的

  • 支持向量机 概述 支持向量机(Support Vector Machines, SVM):是一种监督学习算法。 支持向量(Support Vector)就是离分隔超平面最近的那些点。 机(Machine)就是表示一种算法,而不是表示机器。 支持向量机 场景 要给左右两边的点进行分类 明显发现:选择D会比B、C分隔的效果要好很多。 支持向量机 原理 SVM 工作原理 对于上述的苹果和香蕉,我们想象为

  • 支持向量机(Support Vector Machine,SVM它是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,学习策略是间隔最大化,最终可转化为一个凸二次规划问题的求解。 直观来看,位于两类训练样本“正中间”的划分超平面效果最好,即中间最粗的那条。 一般使用支持向量机时还会使用核函数,这样支持向量机会成为实质上的非线性分类器。 基本概念 在样本空间中,划分超平面可以定义为

  • 本文向大家介绍Python 支持向量机分类器的实现,包括了Python 支持向量机分类器的实现的使用技巧和注意事项,需要的朋友参考一下 支持向量机(Support Vector Machine, SVM)是一类按监督学习(supervised learning)方式对数据进行二元分类的广义线性分类器(generalized linear classifier),其决策边界是对学习样本求解的最大边距

  • 主要内容:初识支持向量机,支持向量机组成,支持向量机本质,支持向量机应用,总结支持向量机,英文全称“Support Vector Machines”(简称 SVM),它是机器学习中最常用的一种“分类算法”。SVM 是一种非常优雅的算法,有着非常完善的数学理论基础,其预测效果,在众多机器学习模型中可谓“出类拔萃”。在深度学习没有普及之前,“支持向量机”可以称的上是传统机器学习中的“霸主”,下面我们将介绍本节的主人公——支持向量机(SVM)。 初识支持向量机 支持向量机是有监督

  • 综述 “看二更云,三更月,四更天。” 本文采用编译器:jupyter    给定训练样本集D,分类学习最基本的想法就是基于训练集D的样本空间中找到一个划分超平面,将不同类别的样本分开。但能将训练样本分开但划分超平面可能有很多,如图。 存在多个划分超平面将两类训练样本分开 直观上看,应该去找位于两类训练样本"正中间"的划分超平面,即图中粗线的那个,因为该划分超平面对训练样本局部扰动的"容忍性"最好。