大家好,我是机器学习的新手,目前正在进行一个基于犯罪预测的有趣项目。下面的代码块返回了一个错误。我使用的是UCI ML Repo提供的数据集。
df_d=pd.read_csv('communities-crime-full.csv')dfdf['highCrime'] = np.where(df['ViolentCrimesPerPop']>0.1, 1, 0)Y = df['highCrime']# print('total len is ',len(Y))initial=pd.read_csv('communities-crime-full.csv')initial = initial.drop('communityname', 1)initial = initial.drop('ViolentCrimesPerPop', 1)initial = initial.drop('fold', 1)initial = initial.drop('state', 1)initial = initial.drop('community', 1)initial = initial.drop('county', 1)skipinitialspace = Truefeature_name=list(initial)#initial=initial.convert_objects(convert_numeric=True)initial=initial.apply(pd.to_numeric(errors='coerce').isnull())New_data=initial.fillna(initial.mean())# print('before...')# print(initial)# print('after...')# print(New_data) clf = tree.DecisionTreeClassifier(max_depth=3)# clf = tree.DecisionTreeClassifier()clf = clf.fit(New_data, Y)clffold=df['fold']scores = cross_val_score(clf, New_data, Y,fold,'accuracy',10)print('cross_val_accuracy is ',scores) print('cross_val_accuracy_avg is ',np.array(scores).mean()) scores = cross_val_score(clf, New_data, Y,fold,'precision',10)print('cross_val_precision is ',scores) print('cross_val_precision_avg is ',np.array(scores).mean()) scores = cross_val_score(clf, New_data, Y,fold,'recall',10)print('cross_val_recall is ',scores) print('cross_val_recall_avg is ',np.array(scores).mean())
我收到了以下错误
TypeError Traceback (most recent call last)<ipython-input-53-9f206c43d444> in <module>() 17 feature_name=list(initial) 18 #initial=initial.convert_objects(convert_numeric=True)---> 19 initial=initial.apply(pd.to_numeric(errors='coerce').isnull()) 20 New_data=initial.fillna(initial.mean()) 21 # print('before...')TypeError: to_numeric() 缺少一个必需的位置参数: 'arg'
回答:
因为你试图将 pd.to_numeric
用作函数引用,你不能以这种方式使用关键字参数。
你可以这样做:
initial = initial.apply(pd.to_numeric, errors='coerce')
或者使用 lambda 函数:
initial = initial.apply(lambda x: pd.to_numeric(x, errors='coerce'))