如何解决Python中稀疏矩阵的“NaN或无穷大”问题?

2024-02-01

我对 python 完全陌生。我使用了一些在网上找到的代码,并尝试对其进行处理。因此,我正在创建一个文本文档矩阵,并且想在训练逻辑回归模型之前添加一些额外的功能。

虽然我已经用 R 检查了我的数据并且没有收到错误,但是当我运行逻辑回归时,我收到了错误“ValueError:数组包含 NaN 或无穷大。”当我不添加自己的功能时,我不会收到相同的错误。我的功能位于文件“toPython.txt”中。

注意这两个电话断言所有有限返回“None”的函数!

以下是我使用的代码和得到的输出:

def _assert_all_finite(X):
if X.dtype.char in np.typecodes['AllFloat'] and not np.isfinite(X.sum()) and not np.isfinite(X).all():
    raise ValueError("Array contains NaN or infinity.")

def assert_all_finite(X):
_assert_all_finite(X.data if sparse.issparse(X) else X)

def main():

print "loading data.."
traindata = list(np.array(p.read_table('data/train.tsv'))[:,2])
testdata = list(np.array(p.read_table('data/test.tsv'))[:,2])
y = np.array(p.read_table('data/train.tsv'))[:,-1]

tfv = TfidfVectorizer(min_df=12,  max_features=None, strip_accents='unicode',  
    analyzer='word',stop_words='english', lowercase=True,
    token_pattern=r'\w{1,}',ngram_range=(1, 1), use_idf=1,smooth_idf=1,sublinear_tf=1)

rd = lm.LogisticRegression(penalty='l2', dual=True, tol=0.0001, 
                         C=1, fit_intercept=True, intercept_scaling=1.0, 
                         class_weight=None, random_state=None)

X_all = traindata + testdata
lentrain = len(traindata)

f = np.array(p.read_table('data/toPython.txt'))
indices = np.nonzero(~np.isnan(f))
b = csr_matrix((f[indices], indices), shape=f.shape, dtype='float')

print b.get_shape
**print assert_all_finite(b)**
print "fitting pipeline"
tfv.fit(X_all)
print "transforming data"
X_all = tfv.transform(X_all)
print X_all.get_shape

X_all=hstack( [X_all,b], format='csr' )
print X_all.get_shape

**print assert_all_finite(X_all)**

X = X_all[:lentrain]
print "3 Fold CV Score: ", np.mean(cross_validation.cross_val_score(rd, X, y, cv=3, scoring='roc_auc'))

输出是:

loading data..
<bound method csr_matrix.get_shape of <10566x40 sparse matrix of type '<type 'numpy.float64'>'
with 422640 stored elements in Compressed Sparse Row format>>
**None**
fitting pipeline
transforming data
<bound method csr_matrix.get_shape of <10566x13913 sparse matrix of type '<type 'numpy.float64'>'
with 1450834 stored elements in Compressed Sparse Row format>>
<bound method csr_matrix.get_shape of <10566x13953 sparse matrix of type '<type 'numpy.float64'>'
with 1873474 stored elements in Compressed Sparse Row format>>
**None**
3 Fold CV Score: 
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 523, in runfile
execfile(filename, namespace)
File "C:\Users\Stergios\Documents\Python\beat_bench.py", line 100, in <module>
main()
File "C:\Users\Stergios\Documents\Python\beat_bench.py", line 97, in main
print "3 Fold CV Score: ", np.mean(cross_validation.cross_val_score(rd, X, y, cv=3, scoring='roc_auc'))
File "C:\Python27\lib\site-packages\sklearn\cross_validation.py", line 1152, in cross_val_score
for train, test in cv)
File "C:\Python27\lib\site-packages\sklearn\externals\joblib\parallel.py", line 517, in __call__
self.dispatch(function, args, kwargs)
File "C:\Python27\lib\site-packages\sklearn\externals\joblib\parallel.py", line 312, in dispatch
job = ImmediateApply(func, args, kwargs)
File "C:\Python27\lib\site-packages\sklearn\externals\joblib\parallel.py", line 136, in __init__
self.results = func(*args, **kwargs)
File "C:\Python27\lib\site-packages\sklearn\cross_validation.py", line 1064, in _cross_val_score
score = scorer(estimator, X_test, y_test)
File "C:\Python27\lib\site-packages\sklearn\metrics\scorer.py", line 141, in __call__
return self._sign * self._score_func(y, y_pred, **self._kwargs)
File "C:\Python27\lib\site-packages\sklearn\metrics\metrics.py", line 403, in roc_auc_score
fpr, tpr, tresholds = roc_curve(y_true, y_score)
File "C:\Python27\lib\site-packages\sklearn\metrics\metrics.py", line 672, in roc_curve
fps, tps, thresholds = _binary_clf_curve(y_true, y_score, pos_label)
File "C:\Python27\lib\site-packages\sklearn\metrics\metrics.py", line 504, in _binary_clf_curve
y_true, y_score = check_arrays(y_true, y_score)
File "C:\Python27\lib\site-packages\sklearn\utils\validation.py", line 233, in check_arrays
_assert_all_finite(array)
File "C:\Python27\lib\site-packages\sklearn\utils\validation.py", line 27, in _assert_all_finite
raise ValueError("Array contains NaN or infinity.")
ValueError: Array contains NaN or infinity.

有任何想法吗?谢谢你!!


我发现执行以下操作,假设sm是一个稀疏矩阵(我的是CSR矩阵,如果你知道的话,请谈谈其他类型!)效果很好:

手动更换nans 在数据向量中具有适当的数字:

In [4]: np.isnan(matrix.data).any()
Out[4]: True

In [5]: sm.data.shape
Out[5]: (553555,)

In [6]: sm.data = np.nan_to_num(sm.data)

In [7]: np.isnan(matrix.data).any()
Out[7]: False

In [8]: sm.data.shape
Out[8]: (553555,)

所以我们不再有nan值,但矩阵将这些零显式编码为有价值的索引。

从稀疏矩阵中删除显式编码的零值:

In [9]: sm.eliminate_zeros()

In [10]: sm.data.shape
Out[10]: (551391,)

我们的矩阵现在实际上变得更小了,耶!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何解决Python中稀疏矩阵的“NaN或无穷大”问题? 的相关文章

  • 从数据框中按索引删除行

    我有一个数组wrong indexes train其中包含我想从数据框中删除的索引列表 0 63 151 469 1008 要删除这些索引 我正在尝试这样做 df train drop wrong indexes train 但是 代码失败
  • 我怎样才能更多地了解Python的内部原理? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我使用Python编程已经有半年多了 我对Python内部更感兴趣 而不是使用Python开发应用程序
  • pydev 调试器:严重警告:此版本的 python 似乎编译不正确(内部生成的文件名不是绝对的)[重复]

    这个问题在这里已经有答案了 通过运行 from sklearn datasets import fetch california housing import pandas as pd pd set option precision 4 m
  • Argparse nargs="+" 正在吃位置参数

    这是我的解析器配置的一小部分 parser add argument infile help The file to be imported type argparse FileType r default sys stdin parser
  • 填充两个函数之间的区域

    import matplotlib pyplot as plt import numpy as np def domain x np arange 0 10 0 001 f1 lambda x 2 x x 2 0 5 plt plot x
  • 具有定制损失函数的随机森林

    我是机器学习领域的初学者 对于一个项目 我必须在随机森林分类中使用自定义损失函数 到目前为止我一直使用 scikit 通过 scikit 实现这一点的建议会更有帮助 损失函数 分类树中的基尼杂质和熵 在 scikit 的 tree pyx
  • 更改 `base_compiledir` 以将编译后的文件保存在另一个目录中

    theano base compiledir指编译后的文件存放的目录 有没有办法可以永久设置theano base compiledir到不同的位置 也许通过修改一些内部 Theano 文件的内容 http deeplearning net
  • python suds SOAP 请求中的名称空间前缀错误

    我使用 python suds 来实现客户端 并且在发送的 SOAP 标头中得到了错误的命名空间前缀 用于定义由element ref 在 wsdl 中 wsdl 正在引用数据类型 xsd 文件 请参见下文 问题出在函数上GetRecord
  • 使用 OLS 回归预测未来值(Python、StatsModels、Pandas)

    我目前正在尝试在 Python 中实现 MLR 但不确定如何将我找到的系数应用于未来值 import pandas as pd import statsmodels formula api as sm import statsmodels
  • 对图像块进行多重处理

    我有一个函数必须循环遍历图像的各个像素并计算一些几何形状 此函数需要很长时间才能运行 在 24 兆像素图像上大约需要 5 小时 但似乎应该很容易在多个内核上并行运行 然而 我一生都找不到一个有据可查 解释充分的例子来使用 Multiproc
  • 使用鼻子获取设置中当前测试的名称

    我目前正在使用鼻子编写一些功能测试 我正在测试的库操作目录结构 为了获得可重现的结果 我存储了一个测试目录结构的模板 并在执行测试之前创建该模板的副本 我在测试中执行此操作 setup功能 这确保了我在测试开始时始终具有明确定义的状态 现在
  • 如何设置 Celery 来调用自定义工作器初始化?

    我对 Celery 很陌生 我一直在尝试设置一个具有 2 个独立队列的项目 一个用于计算 另一个用于执行 到目前为止 一切都很好 我的问题是执行队列中的工作人员需要实例化一个具有唯一 object id 的类 每个工作人员一个 id 我想知
  • Seaborn Pairplot 图例不显示颜色

    我一直在学习如何在Python中使用seaborn和pairplot 这里的一切似乎都工作正常 但由于某种原因 图例不会显示相关的颜色 我无法找到解决方案 因此如果有人有任何建议 请告诉我 x sns pairplot stats2 hue
  • 如何使用列表作为pandas数据框中的值?

    我有一个数据框 需要列的子集包含具有多个值的条目 下面是一个带有 运行时 列的数据框 其中包含程序在各种条件下的运行时 df condition a runtimes 1 1 5 2 condition b runtimes 0 5 0 7
  • 将 2D NumPy 数组按元素相乘并求和

    我想知道是否有一种更快的方法 专用 NumPy 函数来执行 2D NumPy 数组的元素乘法 然后对所有元素求和 我目前使用np sum np multiply A B 其中 A B 是相同维度的 NumPy 数组m x n 您可以使用np
  • Python 将日志滚动到变量

    我有一个使用多线程并在服务器后台运行的应用程序 为了无需登录服务器即可监控应用程序 我决定包括Bottle http bottlepy org为了响应一些HTTP端点并报告状态 执行远程关闭等 我还想添加一种查阅日志文件的方法 我可以使用以
  • 创建嵌套字典单行

    您好 我有三个列表 我想使用一行创建一个三级嵌套字典 i e l1 a b l2 1 2 3 l3 d e 我想创建以下嵌套字典 nd a 1 d 0 e 0 2 d 0 e 0 3 d 0 e 0 b a 1 d 0 e 0 2 d 0
  • 如何在 OSX 上安装 numpy 和 scipy?

    我是 Mac 新手 请耐心等待 我现在使用的是雪豹 10 6 4 我想安装numpy和scipy 所以我从他们的官方网站下载了python2 6 numpy和scipy dmg文件 但是 我在导入 numpy 时遇到问题 Library F
  • Elastic Beanstalk 中的 enum34 问题

    我正在尝试在 Elastic Beanstalk 中设置 django 环境 当我尝试通过requirements txt 文件安装时 我遇到了python3 6 问题 File opt python run venv bin pip li
  • 检查字典键是否有空值

    我有以下字典 dict1 city name yass region zipcode phone address tehsil planet mars 我正在尝试创建一个基于 dict1 的新字典 但是 它不会包含带有空字符串的键 它不会包

随机推荐

  • 可变数量列表的交集

    我定义两个列表的交集如下 def intersect a b return list set a set b 对于三个参数 它看起来像 def intersect a b c return list set a set b set c 我可
  • 如何在 Windows 中从 python 3.7 降级到 3.6

    我正在尝试安装tensorflow 但python 3 7不支持它 所以我想在不使用anaconda的情况下获得python 3 6 那么有什么建议吗 我已经这样做过很多次了 我的第一个技巧是使用虚拟环境 https realpython
  • 从命令列表中调用 shell 命令,直到所有命令都完成

    我有我想要调用的 shell 命令列表 最多可同时运行四个进程 我的基本想法是将命令发送到 shell 直到 4 个命令处于活动状态 然后 该脚本通过查找公共字符串 例如 不断检查所有进程的进程计数 nohup scrapy 抓取 urlM
  • 是否可以使 Node 不需要“.js”扩展名进行导入?

    Node 现在内置了对导入的支持 这非常棒 但该支持要求您指定文件扩展名 这很烦人 我确信这是有道理的 可能与他们对 mjs扩展 但是有什么方法可以解决它并使import 像平常一样 工作 你可以离开 js off 您可以通过设置来实现这一
  • Docker compose postgresql 服务 - 在构建过程中无法创建用户和数据库?

    我已经在这上面浪费了一整天的时间 并且说我对本应简单的任务的不必要的复杂性没有留下深刻的印象 这是一种严重的轻描淡写 好吧 说完之后 我正在使用 docker machine docker compose postgresql 和 redi
  • 如何在 Oracle 中转义 regexp_replace?

    我正在为字符串创建一个小的replaceParam函数 并且希望能够转义替换 例如 G select regexp replace ABC ABC ABC XXX from dual leads to XXX XXX 但我希望能够逃脱替换
  • 为什么 boostuniform_int_distribution 采用闭范围(而不是半开范围,遵循常见的 C++ 用法)?

    标题说明了一切 甚至还有一个warning http www boost org doc libs 1 55 0 doc html boost random tutorial html在文档页面中 警告 与常见的 C 用法相反uniform
  • 打开 AVD 管理器时出错

    在模拟器上运行代码时 我遇到了常见问题 控制台消息是 2013 01 05 19 39 15 Doodlz Android Launch 2013 01 05 19 39 15 Doodlz adb is running normally
  • 如何将动画 GIF 写入 iOS 相机胶卷?

    如何将动画 GIF 写入 iOS 相机胶卷 我知道照片库应用程序无法播放动画 但例如我应该能够在发送电子邮件等时导入它 我试过了 UIImageWriteToSavedPhotosAlbum UIImage imageWithData se
  • 更改列表项选择的视图属性

    我有一个包含自定义行的 ListView 此自定义行具有以下 UI 元素 图像视图图像视图1 图像视图2 文本视图文本视图1 文本视图2 文本视图3 要求是每当选择列表行时都会发生以下更改 imageView1背景 颜色改变 imageVi
  • 重置到 Git 中的第一个提交?

    有没有什么相当于 root标志在rebase命令为reset命令 git reset root 假设我想重置到当前分支中的第一个提交 我是否必须手动挖掘历史记录并找到该提交的哈希值 或者是否有一种简单的方法来重置到第一个可用的提交 根提交
  • Xcode 是否有更好的更新系统?

    Xcode 4 0 1 几天前发布了 这意味着我再次下载 4 5 GB 的野兽来更新 有谁知道苹果是否计划推出更好的更新系统 这些天我在等待洪流 不像下载到 80 却失去连接那么令人沮丧
  • Laravel Composer 安装出现错误“您的锁定文件不包含兼容的软件包集,请运行 Composer update”

    我编写 Laravel 代码已经有一段时间了 目前 我尝试从 github 克隆一个项目并在本地进行编辑 我在项目目录中安装了 Composer 但未包含供应商文件夹 我尝试运行composer install但我给了我这个错误 Your
  • gitlab - 使用 access_token 推送到存储库

    我实现了 oauth2 Web 流程 以便从我的应用程序的用户获取 access token 使用 access token 我想执行以下操作 获取用户信息 为该用户创建一个存储库 将代码推送到此存储库 使用 git push 我已经成功获
  • 变量中缀到前缀到后缀

    我在互联网上搜索了一个很好的实现 将变量表达式从中缀表示法转换为前缀和后缀 而不是数字表达式 我所做的所有搜索都没有成功 基本上我想看看 PHP 中是否有任何实现 这样我可以修改它以支持更多运算符 而不仅仅是 例如转换 a b c p c
  • java泛型通配符

    我对 Java 泛型类型中通配符的使用有疑问 它们之间的基本区别是什么 List
  • openCV 滤波器图像 - 用局部最大值替换内核

    关于我的问题的一些详细信息 我正在尝试在 openCV 中实现角点检测器 另一种内置算法 Canny Harris 等 我有一个充满响应值的矩阵 最大响应值为 检测到角点的最大概率为 我有一个问题 在一个点的附近检测到很少的角 但只有一个
  • 将所有列表值合并到地图中[重复]

    这个问题在这里已经有答案了 我想将地图转换为 Map
  • 注册表部分的脚本功能

    我们的软件支持一系列 70 文件关联 用户可以选择与我们的应用程序关联 直接在Registry安装程序部分并使用标志来控制卸载期间的行为以及Check标志来控制是否应将其写入注册表 用户可以通过自定义页面控制要设置的关联CheckListB
  • 如何解决Python中稀疏矩阵的“NaN或无穷大”问题?

    我对 python 完全陌生 我使用了一些在网上找到的代码 并尝试对其进行处理 因此 我正在创建一个文本文档矩阵 并且想在训练逻辑回归模型之前添加一些额外的功能 虽然我已经用 R 检查了我的数据并且没有收到错误 但是当我运行逻辑回归时 我收