小编joh*_*doe的帖子

如何解读scikit的学习混淆矩阵和分类报告?

我有一个情感分析的任务,使用本该即时通讯语料库的意见有5类(very neg,neg,neu,pos,very pos),从1到5,所以我做的分类如下:

from sklearn.feature_extraction.text import TfidfVectorizer
import numpy as np
tfidf_vect= TfidfVectorizer(use_idf=True, smooth_idf=True,
                            sublinear_tf=False, ngram_range=(2,2))
from sklearn.cross_validation import train_test_split, cross_val_score

import pandas as pd

df = pd.read_csv('/corpus.csv',
                     header=0, sep=',', names=['id', 'content', 'label'])

X = tfidf_vect.fit_transform(df['content'].values)
y = df['label'].values


from sklearn import cross_validation
X_train, X_test, y_train, y_test = cross_validation.train_test_split(X,
                                                    y, test_size=0.33)


from sklearn.svm import SVC
svm_1 = SVC(kernel='linear')
svm_1.fit(X, y)
svm_1_prediction = svm_1.predict(X_test)
Run Code Online (Sandbox Code Playgroud)

然后根据指标我获得了以下混淆矩阵和分类报告,如下:

print '\nClasification report:\n', classification_report(y_test, …
Run Code Online (Sandbox Code Playgroud)

nlp machine-learning svm confusion-matrix scikit-learn

27
推荐指数
1
解决办法
3万
查看次数

使用scikit学习获取最具信息性的功能的问题?

我试图从文本语料库中获取最丰富的功能.从这个回答良好的问题我知道这项任务可以按如下方式完成:

def most_informative_feature_for_class(vectorizer, classifier, classlabel, n=10):
    labelid = list(classifier.classes_).index(classlabel)
    feature_names = vectorizer.get_feature_names()
    topn = sorted(zip(classifier.coef_[labelid], feature_names))[-n:]

    for coef, feat in topn:
        print classlabel, feat, coef
Run Code Online (Sandbox Code Playgroud)

然后:

most_informative_feature_for_class(tfidf_vect, clf, 5)
Run Code Online (Sandbox Code Playgroud)

对于这个classfier:

X = tfidf_vect.fit_transform(df['content'].values)
y = df['label'].values


from sklearn import cross_validation
X_train, X_test, y_train, y_test = cross_validation.train_test_split(X,
                                                    y, test_size=0.33)
clf = SVC(kernel='linear', C=1)
clf.fit(X, y)
prediction = clf.predict(X_test)
Run Code Online (Sandbox Code Playgroud)

问题是输出most_informative_feature_for_class:

5 a_base_de_bien bastante   (0, 2451)   -0.210683496368
  (0, 3533) -0.173621065386
  (0, 8034) -0.135543062425
  (0, 10346)    -0.173621065386
  (0, …
Run Code Online (Sandbox Code Playgroud)

python nlp machine-learning pandas scikit-learn

17
推荐指数
1
解决办法
3116
查看次数

如何使用OCR有效地从PDF文件目录中提取文本?

我有一个包含PDF文件(图像)的大型目录,如何有效地从目录中的所有文件中提取文本?到目前为止,我试图:

import multiprocessing
import textract

def extract_txt(file_path):
    text = textract.process(file_path, method='tesseract')

p = multiprocessing.Pool(2)
file_path = ['/Users/user/Desktop/sample.pdf']
list(p.map(extract_txt, file_path))
Run Code Online (Sandbox Code Playgroud)

但是,它不起作用......需要花费很多时间(我有一些文件有600页).另外:a)我不知道如何有效地处理目录转换部分.b)我想添加页面分隔符,让我们说:<start/age = 1> ... page content ... <end/page = 1>但我不知道如何做到这一点.

因此,如何将该extract_txt函数应用于.pdf以另一个目录但以.txt格式结尾并以相同文件返回的目录的所有元素,并添加带有OCR文本提取的页面分隔符?

此外,我很好奇使用谷歌文档来完成这项任务,是否有可能以编程方式使用谷歌文档解决上述文本提取问题?

UPDATE

关于"添加页面分隔符"问题(<start/age = 1> ... page content ... <end/page = 1>)在阅读了Roland Smith的回答后,我尝试:

from PyPDF2 import PdfFileWriter, PdfFileReader
import textract


def extract_text(pdf_file):
    inputpdf = PdfFileReader(open(pdf_file, "rb"))
    for i in range(inputpdf.numPages):
        w = PdfFileWriter()
        w.addPage(inputpdf.getPage(i))
        outfname = 'page{:03d}.pdf'.format(i)
        with …
Run Code Online (Sandbox Code Playgroud)

python parallel-processing tesseract python-3.x apache-tika

15
推荐指数
1
解决办法
3308
查看次数

scikit-learn虚拟分类器的理论基础是什么?

根据文档,我读到可以使用虚拟分类器根据分类算法对其进行测试.

此分类器可用作与其他(实际)分类器进行比较的简单基线.不要将它用于实际问题.

虚拟分类器在使用分层方法时会做什么.我知道文件说:

通过尊重训练集的类分布来生成预测.

任何人都可以给我一个更理论的解释,为什么这是分类器性能的证明?

python artificial-intelligence machine-learning svm scikit-learn

11
推荐指数
1
解决办法
5585
查看次数

如何降低pandas数据帧中的所有元素?

只是一个快速问题的人,我有一个熊猫数据帧:

In [11]: df = pd.DataFrame([['A', 'B'], ['C', E], ['D', 'C']],columns=['X', 'Y', 'Z'])

In [12]: df

Out[12]: 

   X  Y  Z
0  A  B  D
1  C  E  C
Run Code Online (Sandbox Code Playgroud)

如何转换为降低所有元素df:

Out[12]: 

   X  Y  Z
0  a  b  d
1  c  e  c
Run Code Online (Sandbox Code Playgroud)

我查看了文档,并尝试了以下内容:

df = [[col.lower() for col in [df["X"],df["Y"], df["Z"]]]]
df
Run Code Online (Sandbox Code Playgroud)

然而,它不起作用.如何降低pandas数据框内的所有元素?

python python-3.x pandas

8
推荐指数
1
解决办法
4387
查看次数

如何用scikit绘制ROC曲线学习多类情况?

我想为我自己的数据集绘制多类情况的ROC曲线.通过文档我读到标签必须是二进制的(我有5个标签从1到5),所以我按照文档中提供的示例:

print(__doc__)

import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm, datasets
from sklearn.metrics import roc_curve, auc
from sklearn.cross_validation import train_test_split
from sklearn.preprocessing import label_binarize
from sklearn.svm import SVC
from sklearn.multiclass import OneVsRestClassifier



from sklearn.feature_extraction.text import TfidfVectorizer
import numpy as np
tfidf_vect= TfidfVectorizer(use_idf=True, smooth_idf=True, sublinear_tf=False, ngram_range=(2,2))
from sklearn.cross_validation import train_test_split, cross_val_score

import pandas as pd

df = pd.read_csv('path/file.csv',
                     header=0, sep=',', names=['id', 'content', 'label'])


X = tfidf_vect.fit_transform(df['content'].values)
y = df['label'].values




# Binarize the output
y = …
Run Code Online (Sandbox Code Playgroud)

python machine-learning matplotlib python-2.7 scikit-learn

7
推荐指数
1
解决办法
7930
查看次数

如何修复一个试图捕捉一些单词和id的正则表达式?

我有一个.txt看起来像s字符串的文件.该s字符串由符合word_1随后word_2idnumber:

word_1 word_2 id number
Run Code Online (Sandbox Code Playgroud)

我想创建一个正则表达式,在列表中捕获单词"nunca"后面的单词的所有发生VM_ _ _ _.提取和模式的constrait一个接一个地出现的事件,其中是字符串的自由字符,例如:"nunca"VM_ _ _ __id

nunca nunca RG 0.293030
first_word second_word VM223FDS 0.902333
error errpr RG 0.345355667
nunca nunca RG 0.1489098
ninguna ninguno DI0S3DF 0.345344
third fourth VM34SDF 0.7865489
Run Code Online (Sandbox Code Playgroud)

这是我想提取的模式,因为它们是一个接一个地放置的.这将是列表中所需的输出:

[(nunca,RG),(second_word, VM223FDS)]
Run Code Online (Sandbox Code Playgroud)

例如,这将是错误的,因为它们不是一个接一个:

nunca nunca RG 0.293030
prendas prenda NCFP000 0.95625
success success VM23434SDF 0.902333
Run Code Online (Sandbox Code Playgroud)

所以对于 …

python regex string python-2.7

7
推荐指数
1
解决办法
67
查看次数

如何hstack几个稀疏矩阵(特征矩阵)?

我有 3 个稀疏矩阵:

In [39]:

mat1


Out[39]:
(1, 878049)
<1x878049 sparse matrix of type '<type 'numpy.int64'>'
    with 878048 stored elements in Compressed Sparse Row format>

In [37]:

mat2


Out[37]:
(1, 878049)
<1x878049 sparse matrix of type '<type 'numpy.int64'>'
    with 744315 stored elements in Compressed Sparse Row format>

In [35]:

mat3



Out[35]:
(1, 878049)
<1x878049 sparse matrix of type '<type 'numpy.int64'>'
    with 788618 stored elements in Compressed Sparse Row format>
Run Code Online (Sandbox Code Playgroud)

文档中,我了解到可以使用hstackvstack、 和concatenate它们这种类型的矩阵。所以我试着对hstack …

python numpy machine-learning scipy scikit-learn

7
推荐指数
1
解决办法
5942
查看次数

pandas extractall()是不是在提供正则表达式的情况下提取所有案例?

我有一个嵌套的字符串列表,我想提取它们的日期.日期格式为:

两个数字(从0112)连字符树字母(有效月份)连字符两个数字,例如:08-Jan—0703-Oct—01

我试着使用以下正则表达式:

r'\d{2}(—|-)(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-\d{2,4}'
Run Code Online (Sandbox Code Playgroud)

然后我按如下方式测试:

import pandas as pd
df = pd.DataFrame({'blobs':['6-Feb- 1 4 Facebook’s virtual-reality division created a 3-EBÚ7 11 network of 500 free demo stations in Best Buy stores to give people a taste of VR using the Oculus Rift 90 GT 48 headset. But according to a Wednesday report from Business Insider, about 200 of the demo stations will close after low interest from consumers. 17-Feb-2014',
                         'I think in a …
Run Code Online (Sandbox Code Playgroud)

python regex python-3.x pandas

6
推荐指数
1
解决办法
1634
查看次数

如何在熊猫to_csv()中设置自定义分隔符?

从文档中我知道,要保存为.csv文件,只需执行以下操作:

df.to_csv(sep = ';')
Run Code Online (Sandbox Code Playgroud)

但是,我想使用我的自定义分隔符,例如::::。如何设置:::为分隔符?我尝试过了:

df.to_csv(sep = ':::')
Run Code Online (Sandbox Code Playgroud)

并得到: TypeError: "delimiter" must be a 1-character string

我也尝试:df.to_csv('../data.csv', sep='\s*\:::', index=False),得到了相同的结果。因此,如何设置自己的分隔符?

更新

因为我在数据框中|,所以不能使用此类字符作为分隔符。我尝试使用以下方法将其删除:

df.replace('\b|\b', '-', regex = True)

但是,它没有用。关于如何删除它的替代方法?

python csv python-3.x pandas

6
推荐指数
2
解决办法
1万
查看次数