나는 누락 된 모든 데이터 ('?'로 표시)를 NaN
에 입력하고 sklearn
의 imputation 도구를 사용하여 평균을 산출하려고합니다. 평균값으로. 내 문제에 재현하기 위해, 나는 다음과 같이 내 코드를 포함했다 : 나는 Py를 2.7.12기계 학습 데이터를 입력하는 중에 물음표 ('?')를 NaN으로 바꾸는 오류
에 IDE로 PyCharm, 맥 OS X와 아나콘다를 사용하는이 내 코드입니다 :
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
df = pd.read_csv('http://archive.ics.uci.edu/ml/machine-learning-databases/communities/communities.data', header=None, sep=',\s', na_values=["?"])
df.tail()
from sklearn.preprocessing import Imputer
imr = Imputer(missing_values='NaN', strategy='mean', axis=0)
imr= imr.fit(df)
그리고 여기 내 오류 메시지
/Users/zdong/anaconda/bin/python/Users/zdong/PycharmProjects/ml/crim_workingfile.py
/Users/zdong/PycharmProjects/ml/crim_workingfile.py:4: ParserWarning: Falling back to the 'python' engine because the 'c' engine does not support regex separators (separators > 1 char and different from '\s+' are interpreted as regex); you can avoid this warning by specifying engine='python'.
df = pd.read_csv('http://archive.ics.uci.edu/ml/machine-learning databases/communities/communities.data', header=None, sep=',\s', na_values=["?"])
입니다Traceback (most recent call last): File "/Users/zdong/PycharmProjects/535_final/535_workingfile.py", line 8, in <module> imr= imr.fit(df) File "/Users/zdong/anaconda/lib/python2.7/site-packages/sklearn/preprocessing/imputation.py", line 156, in fit force_all_finite=False) File "/Users/zdong/anaconda/lib/python2.7/site-packages/sklearn/utils/validation.py" line 382, in check_array array = np.array(array, dtype=dtype, order=order, copy=copy) ValueError: invalid literal for float(): 6,?,?,Ontariocity,10,0.2,0.78,0.14,0.46,0.24,0.77,0.5,0.62,0.4,0.17,0.21,1,0.4,0.73,0.22,0.25,0.26,0.47,0.29,0.36,0.24,0.28,0.32,0.22,0.27,0.25,0.29,0.16,0.35,0.5,0.55,0.16,0.47,0.58,0.53,0.2,0.6,0.24
제발 초라한 초보자 QAQ를 도와주세요.
특히 sklearn에 대해서는 알지 못합니다.하지만 플로트 배열로 변환하려고 시도하고 '?'을 변환 할 수 없기 때문에 오류가 발생합니다. 하나에. 'NaN'은 괜찮습니까? 아마 모든 것을 변환 할 수 있을까요? ' 구문 분석하기 전에? – Iluvatar
@Iluvatar 고마워 ... 어떻게 이걸 변환 할 수있어? ' NaN에? 죄송합니다 ...이 질문은 약간 어리 석다는 것을 알고 있습니다 ... –
아, 네가'na_values = [ "?"]'를 사용 했으므로 그것을 잡아야한다. 당신의'sep '는'', \ s ''일지도 모르지만 당신이 가진 CSV 일뿐입니다 (쉼표 사이에는 공백이 없습니다). 이 경우 전체 행이 하나의 열로 간주됩니다. – Iluvatar