【发布时间】:2020-07-08 18:25:02
【问题描述】:
我正在做一个小型数据分析项目(为我自己),我遇到了一个问题:o
这是我的代码 :)
import numpy as np
import pandas as pd
import tensorflow as tf
data = pd.read_csv("game_Statistics.csv")
#prepare data
#drop useless columns
data.drop(columns=['Date', 'Mental State', 'Assists', 'Revives', 'Hits','Head Shots'], inplace=True)
#format time of day to an easyily processable integer
for i in range(len(data['Time of Day'])):
data['Time of Day'][i] = data['Time of Day'][i].replace(" AM", "")
data['Time of Day'][i] = data['Time of Day'][i].replace(" PM", "")
data['Time of Day'][i] = data['Time of Day'][i].replace(":00:00", "")
for i in range(len(data['Accuracy'])):
data['Accuracy'][i] = int(data['Accuracy'][i].replace("%", ""))
y = data['Placed'].values
x = data.drop(columns=['Placed'])
x = x[:].values
x = tf.keras.utils.normalize(x, axis=1)
我认为问题出在 x 数据集(我需要是一个数组)中,当它传递给 normalize 函数时
错误
TypeError: loop of ufunc does not support argument 0 of type float which has no callable conjugate method
(追溯到归一化函数)
任何帮助将不胜感激:)
【问题讨论】:
-
检查
type(x[:].values)和print(x[:].values)的结果,因为这是您传递给tf.keras.utils.normalize()函数的结果。您的错误表明存在字符串,因为该方法需要numpy.array或其他具有.conjugate()方法的对象。 -
@Jason 我在变量资源管理器中添加了一张图片
-
当您将变量名称
x分配 3 次时,我无法知道您的图像中是哪个x,如果您使用我在第一条评论中建议的方法,您将能够在将x传递给tf.keras.utils.normalize()之前立即查看其类型和内容 -
@Jason 我现在明白了,我修复了字符串问题,但现在。 x 值看起来像
[12 3 29 570.68 78 50 343 509 1777],所以列表没有用逗号分隔,是否有不同的方法来调用x[:].values代码块以便正确分隔? -
你能告诉我
type(x[:].values)的结果吗?您需要检查代码中的特定行,以确保所有值都是数字类型,例如int/float等。如何转换/修复问题取决于您的对象类型重新处理。
标签: python python-3.x pandas tensorflow keras