小编pem*_*ahl的帖子

SciPy和scikit-learn - ValueError:尺寸不匹配

我使用SciPyscikit-learn来训练和应用Multinomial朴素贝叶斯分类器进行二进制文本分类.准确地说,我使用该模块sklearn.feature_extraction.text.CountVectorizer创建稀疏矩阵,该稀疏矩阵保存来自文本的单词特征计数,模块sklearn.naive_bayes.MultinomialNB作为分类器实现,用于训练分类器对训练数据并将其应用于测试数据.

输入CountVectorizer是一个表示为unicode字符串的文本文档列表.训练数据远大于测试数据.我的代码看起来像这样(简化):

vectorizer = CountVectorizer(**kwargs)

# sparse matrix with training data
X_train = vectorizer.fit_transform(list_of_documents_for_training)

# vector holding target values (=classes, either -1 or 1) for training documents
# this vector has the same number of elements as the list of documents
y_train = numpy.array([1, 1, 1, -1, -1, 1, -1, -1, 1, 1, -1, -1, -1, ...])

# sparse matrix with test data
X_test = vectorizer.fit_transform(list_of_documents_for_testing)

# Training stage of …
Run Code Online (Sandbox Code Playgroud)

python numpy scipy scikit-learn

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

如何在scikit-learn中对SVM应用标准化?

我正在使用当前稳定版0.13的scikit-learn.我正在使用类将线性支持向量分类器应用于某些数据sklearn.svm.LinearSVC.

关于 scikit-learn文档中的预处理章节中,我已经阅读了以下内容:

在学习算法的目标函数中使用的许多元素(例如支持向量机的RBF内核或线性模型的l1和l2正则化器)假设所有特征都以零为中心并且具有相同顺序的方差.如果某个要素的方差比其他要大一个数量级,那么它可能会主导目标函数并使估算工具无法按预期正确地学习其他要素.

问题1:标准化对于SVM通常是否有用,对于那些具有线性内核函数的人来说也是如此?

问题2:据我所知,我必须计算训练数据的均值和标准差,并使用该类对测试数据应用相同的转换sklearn.preprocessing.StandardScaler.但是,我不明白的是,在将训练数据提供给SVM分类器之前,我是否还必须转换训练数据或仅转换测试数据.

也就是说,我必须这样做:

scaler = StandardScaler()
scaler.fit(X_train)                # only compute mean and std here
X_test = scaler.transform(X_test)  # perform standardization by centering and scaling

clf = LinearSVC()
clf.fit(X_train, y_train)
clf.predict(X_test)
Run Code Online (Sandbox Code Playgroud)

或者我必须这样做:

scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)  # compute mean, std and transform training data as well
X_test = scaler.transform(X_test)  # same as above

clf = LinearSVC()
clf.fit(X_train, y_train)
clf.predict(X_test)
Run Code Online (Sandbox Code Playgroud)

简而言之,我是否必须使用scaler.fit(X_train)或使用scaler.fit_transform(X_train)训练数据才能获得合理的结果 …

python classification normalization svm scikit-learn

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

是否有稀疏矩阵的numpy.delete()等价物?

假设我有一个二维矩阵作为一个numpy数组.如果我想在这个矩阵中删除具有特定索引的行,我会使用numpy.delete().这是我的意思的一个例子:

In [1]: my_matrix = numpy.array([
   ...:     [10, 20, 30, 40, 50],
   ...:     [15, 25, 35, 45, 55],
   ...:     [95, 96, 97, 98, 99]
   ...: ])
In [2]: numpy.delete(my_matrix, [0, 2], axis=0)
Out[2]: array([[15, 25, 35, 45, 55]])
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种方法来使用scipy.sparse包中的矩阵来完成上述操作.我知道可以通过将整个矩阵转换为numpy数组来实现这一点,但我不想这样做.还有其他办法吗?

非常感谢!

python numpy scipy

21
推荐指数
5
解决办法
1万
查看次数

如何将分叉回购的分支合并到原始回购的主分支?

GitHub上有一个开源项目.它的原始仓库包含最新的主分支.现在有人(不是我)分配了这个仓库,从主分支创建了一个开发分支,并将东西添加到开发分支.我现在想要做的是将开发分支合并回主分支.不幸的是,分叉回购的主分支不是最新的.另请注意,我没有拥有两个相应的远程回购.

目前,我已将原始仓库和分叉仓库克隆到我的本地机器上git clone.如何将forked repo的开发分支合并到我本地计算机上的原始仓库的主分支中(即不在远程服务器上,这是不可能的)?

git github git-merge

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

如何在条形和楔形中添加纹理?

我正在使用matplotlib.pyplot.bar()和绘制几个条形图和饼图matplotlib.pyplot.pie().在这两个功能中,我可以更改条形和楔形的颜色.

但是,我需要以黑白打印这些图表.能够在条形和楔形上放置纹理会更有用,类似于Line2D可用于绘制线条的标记属性.我可以用一致的方式用这些标记填充条形和楔形吗?或者还有其他方法来实现这样的目标吗?

python matplotlib

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

django-haystack教程中哪些模型的字段被编入索引?

我正试图绕过django-haystack教程,以便为我的应用程序添加搜索功能.不幸的是,在构建搜索索引时,我不太了解一些关键部分.

在本教程中,以下django模型作为示例:

class Note(models.Model):
    user = models.ForeignKey(User)
    pub_date = models.DateTimeField()
    title = models.CharField(max_length=200)
    body = models.TextField()
Run Code Online (Sandbox Code Playgroud)

Note模型的相应索引类是:

class NoteIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True, use_template=True)
    author = indexes.CharField(model_attr='user')
    pub_date = indexes.DateTimeField(model_attr='pub_date')

    def get_model(self):
        return Note
Run Code Online (Sandbox Code Playgroud)

最后但同样重要的是,我被要求创建一个如下所示的数据模板:

{{ object.title }}
{{ object.user.get_full_name }}
{{ object.body }}
Run Code Online (Sandbox Code Playgroud)

阅读完整个教程之后,我仍然对现在索引的内容感到困惑.据我了解,该字段的内容authorpub_date将被用来创建索引.该字段text仅用于提供一些设置.并且数据模板指定稍后将如何显示搜索结果,即,用于在搜索结果中显示的模型的哪些字段.

这是正确的还是我完全错了?在我看来,教程和文档在很多方面都很模糊.非常感谢你提前.

python django django-haystack

13
推荐指数
1
解决办法
4207
查看次数

如何在doc任务中排除java源文件?

我正在使用sbt 0.11.2进行混合Java/Scala项目.我已经意识到,当我doc从sbt中运行命令时,它不仅会为Scala源文件创建scaladocs src/main/scala,而且还会为Java源文件src/main/java创建scaladocs(sbt wiki声称src/main/scala仅为此创建它们似乎不是真的).

但是,这看起来不太好.例如,对于Foo使用静态方法命名的Java类,生成的scaladoc中有两个条目:Foo类和Foo对象.该类仅列出构造函数,对象列出静态方法.

有什么方法可以告诉sbt src/main/java从scaladoc生成中排除文件夹吗?我想为那些人创建javadoc.

scala sbt scaladoc

12
推荐指数
1
解决办法
2567
查看次数

在OSX上使用格式语言的德语数字分隔符?

更新:答案显示到目前为止它似乎是OSX上与平台相关的错误,它与特定的区域设置有关,因为它们不完全支持分组编号.

更新2:我刚刚在Python的bug跟踪器上打开了一个问题.让我们看看是否有解决此问题的方法.


我想根据德语编号约定格式化整数和浮点数.这可以使用格式语言和表示类型,n但在我的平台上失败.

  • 平台:OS X 10.8.2(Mountain Lion)
  • Python:2.7.3 64位 (v2.7.3:70274d53c1dd, Apr 9 2012, 20:52:43) [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin

例子:

  • 1234 => 1.234
  • 1234.56 => 1.234,56
  • 1000000 => 1.000.000

到目前为止我尝试了什么:

  1. 设置德语区域设置

    import locale
    locale.setlocale(locale.LC_ALL, 'de_DE')
    
    Run Code Online (Sandbox Code Playgroud)
  2. 格式规范选项,仅识别英语格式.

    '{:,}'.format(1234)
    '1,234'
    
    '{:,}'.format(1234.56)
    '1,234.56'
    
    '{:,}'.format(1000000)
    '1,000,000'
    
    Run Code Online (Sandbox Code Playgroud)
  3. 根据Python文档,整数和浮动表示类型n应该做我想要的,但事实并非如此.

     '{:n}'.format(1234)
     '1234'
    
     '{:n}'.format(1234.56)
     '1234,56'  # at least the comma was set correctly here
    
     '{:n}'.format(1000000)
     '1000000'
    
     '{:n}'.format(12345769.56)
     '1,23458e+07'  # it's doing weird things …
    Run Code Online (Sandbox Code Playgroud)

python macos formatting osx-mountain-lion

12
推荐指数
3
解决办法
2905
查看次数

运行Scrapy的Django自定义管理命令:如何包含Scrapy的选项?

我希望能够从Django中运行Scrapy web爬行框架.Scrapy本身仅提供命令行工具scrapy来执行其命令,即该工具不是故意编写以从外部程序调用的.

用户Mikhail Korobov提出了一个很好的解决方案,即从Django自定义管理命令调用Scrapy.为方便起见,我在此重复他的解决方案:

# -*- coding: utf-8 -*-
# myapp/management/commands/scrapy.py 

from __future__ import absolute_import
from django.core.management.base import BaseCommand

class Command(BaseCommand):

    def run_from_argv(self, argv):
        self._argv = argv
        return super(Command, self).run_from_argv(argv)

    def handle(self, *args, **options):
        from scrapy.cmdline import execute
        execute(self._argv[1:])
Run Code Online (Sandbox Code Playgroud)

而不是调用例如scrapy crawl domain.com我现在可以python manage.py scrapy crawl domain.com在Django项目中做.但是,Scrapy命令的选项根本不会被解析.如果我这样做python manage.py scrapy crawl domain.com -o scraped_data.json -t json,我只得到以下回复:

Usage: manage.py scrapy [options] 

manage.py: error: no such option: -o
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,如何扩展自定义管理命令以采用Scrapy的命令行选项?

不幸的是,Django …

python django scrapy

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

如何过滤包含唯一数字的数字?

您有一个数字列表,并且您想要过滤掉那些包含唯一数字的数字,即每个数字只能在数字中出现一次.

积极的例子:

  • 985
  • 58293.6
  • 0.1246

反面例子:

  • 9585(5次出现两次)
  • 58293.666(6次发生3次)
  • 0.12461(1次出现两次)

你会怎么做?我自己的想法是将每个数字转换为字符串,然后检查由字符串的字符组成的集合的大小是否等于字符串的长度.像这样的东西:

def uniques(numbers):
    for number in numbers:
        str_number = str(number)
        if len(set(str_number)) == len(str_number):
            yield number

for i in uniques(xrange(1000, 1050)):
    print i

1023
1024
1025
1026
1027
1028
1029
1032
1034
1035
1036
1037
1038
1039
1042
1043
1045
1046
1047
1048
1049
Run Code Online (Sandbox Code Playgroud)

有没有办法在不首先将整数转换为字符串的情况下执行此操作?

python algorithm

9
推荐指数
2
解决办法
2234
查看次数