【问题标题】:How avoid error "TypeError: invalid data type for einsum" in Python如何在 Python 中避免错误“TypeError:einsum 的数据类型无效”
【发布时间】:2015-09-04 12:33:55
【问题描述】:

我尝试将 CSV 文件加载到 numpy-array 并在 LogisticRegression 等中使用该数组。现在,我正在努力解决错误,如下所示:

import numpy as np
import pandas as pd

from sklearn import preprocessing
from sklearn.linear_model import LogisticRegression    

dataset =  pd.read_csv('../Bookie_test.csv').values
X = dataset[1:, 32:34]
y = dataset[1:, 14]

# normalize the data attributes
normalized_X = preprocessing.normalize(X)
# standardize the data attributes
standardized_X = preprocessing.scale(X)

model = LogisticRegression()
model.fit(X, y)
print(model)
# make predictions
expected = y
predicted = model.predict(X)
# summarize the fit of the model
print(metrics.classification_report(expected, predicted))
print(metrics.confusion_matrix(expected, predicted))

我遇到了一个错误:

> C:\Anaconda32\lib\site-packages\sklearn\utils\validation.py:332:
> UserWarning: The normalize function assumes floating point values as
> input, got object   "got %s" % (estimator, X.dtype)) Traceback (most
> recent call last):   File
> "X:/test3.py", line 23, in
> <module>
>     normalized_X = preprocessing.normalize(X)   File "C:\Anaconda32\lib\site-packages\sklearn\preprocessing\data.py", line
> 553, in normalize
>     norms = row_norms(X)   File "C:\Anaconda32\lib\site-packages\sklearn\utils\extmath.py", line 65,
> in row_norms
>     norms = np.einsum('ij,ij->i', X, X) TypeError: invalid data type for einsum

我是 Python 新手,不喜欢转换:

  1. 将 CSV 加载到 Pandas
  2. 将 Pandas 转换为 NumPy
  3. 在 LogisticRegression 中使用 NumPy

有没有简单的方法,比如:

  1. 加载到 Pandas
  2. 在机器学习方法中使用 Pandas 数据框?

【问题讨论】:

  • 我不明白你问题的后半部分与前半部分有什么关系。错误消息很清楚:“规范化函数假定浮点值作为输入,得到对象”,所以你应该检查你正在读入数据集的内容。您文件中的所有内容是否都是数字,可以通过read_csv 正确解析为数字?
  • 在加载 csv 时是否有机会跳过/忽略不numbers
  • 文档提供了几十个 read_csv 选项;你试过和他们一起玩吗?

标签: python python-2.7 numpy pandas machine-learning


【解决方案1】:

关于主要问题,感谢Evert 的建议,我会检查。

关于#2:我找到了很棒的教程http://www.markhneedham.com/blog/2013/11/09/python-making-scikit-learn-and-pandas-play-nice/

并通过pandas + sklearn 达到预期结果

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-16
    • 1970-01-01
    • 2019-09-29
    • 2013-06-23
    • 2020-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多