【问题标题】:How to use cov function to a dataset iris python如何将 cov 函数用于数据集 iris python
【发布时间】:2019-04-04 06:49:52
【问题描述】:

我想从iris数据集中得到协方差,https://www.kaggle.com/jchen2186/machine-learning-with-iris-dataset/data

我使用的是 numpy,函数 -> np.cov(iris)

with open("Iris.csv") as iris:
    reader = csv.reader(iris)
    data = []
    next(reader)
    for row in reader:
        data.append(row)

for i in data:
    i.pop(0)
    i.pop(4)

iris = np.array(data)
np.cov(iris)

我得到这个错误:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-4-bfb836354075> in <module>
----> 1 np.cov(iris)

D:\Anaconda\lib\site-packages\numpy\lib\function_base.py in cov(m, y, rowvar, bias, ddof, fweights, aweights)
   2300             w *= aweights
   2301 
-> 2302     avg, w_sum = average(X, axis=1, weights=w, returned=True)
   2303     w_sum = w_sum[0]
   2304 

D:\Anaconda\lib\site-packages\numpy\lib\function_base.py in average(a, axis, weights, returned)
    354 
    355     if weights is None:
--> 356         avg = a.mean(axis)
    357         scl = avg.dtype.type(a.size/avg.size)
    358     else:

D:\Anaconda\lib\site-packages\numpy\core\_methods.py in _mean(a, axis, dtype, out, keepdims)
     73             is_float16_result = True
     74 
---> 75     ret = umr_sum(arr, axis, dtype, out, keepdims)
     76     if isinstance(ret, mu.ndarray):
     77         ret = um.true_divide(

TypeError: cannot perform reduce with flexible type

我不明白这是什么意思..

【问题讨论】:

    标签: python python-3.x numpy covariance iris-dataset


    【解决方案1】:

    所以,如果你想修改你的代码,你可以尝试阅读 Iris.csvpandas.read_csv 函数。然后选择您选择的适当列。

    但是,这里有一些命令可以简化这项任务。他们使用scikit-learnnumpy加载鸢尾花数据集得到X和y,得到协方差矩阵:

    from sklearn.datasets import load_iris
    import numpy as np
    
    data = load_iris()
    X = data['data']
    y = data['target']
    
    np.cov(X)
    

    希望这有帮助。

    【讨论】:

    • 它醒了!谢谢@BCJuan,尽管我不明白,type(X) 是 numpy.ndarray 并且 type(iris) 也是 numpy.ndarray .. 为什么它不适用于 iris 数据集?
    • 哪个 Iris 数据集?你的.csv?或者我写的data。数据是一个包含 X、y 和 info 的字典。关于你的Iris.csv。不知道是在里面。但是,如果它的表格同时包含 X 和 y,则可以使用 pandas.read_csv。尽管如此,在不知道你的 Iris.csv 里面是什么的情况下,我无能为力
    • 是的,我指的是我的Iris.csv,是的,它是表格的,它没有 y,但是 X .. 它假设我只需要使用 numpy。总之,谢谢!!
    猜你喜欢
    • 2017-07-31
    • 2021-08-14
    • 1970-01-01
    • 1970-01-01
    • 2020-03-13
    • 2021-11-17
    • 2016-07-16
    • 2021-09-21
    • 2020-01-16
    相关资源
    最近更新 更多