반응형
범주 형 데이터 인코딩을위한 Python "TypeError : unhashable type : 'slice'"
나는 얻고있다
TypeError : 해시 할 수없는 유형 : '슬라이스'
Python에서 범주 형 데이터를 인코딩하기 위해 아래 코드를 실행할 때. 누구든지 도와 줄 수 있습니까?
# Importing the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
# Importing the dataset
dataset = pd.read_csv('50_Startups.csv')
y=dataset.iloc[:, 4]
X=dataset.iloc[:, 0:4]
# Encoding categorical data
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
labelencoder_X = LabelEncoder()
X[:, 3] = labelencoder_X.fit_transform(X[:, 3])
X
데이터 프레임이며 .NET과 같은 슬라이스 용어를 통해 액세스 할 수 없습니다 X[:, 3]
. iloc
또는을 통해 액세스해야합니다 X.values
. 하지만, 당신이 X
만든 방식이 그것을 복사했습니다. 나는 사용할 것이다values
# Importing the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
# Importing the dataset
# dataset = pd.read_csv('50_Startups.csv')
dataset = pd.DataFrame(np.random.rand(10, 10))
y=dataset.iloc[:, 4]
X=dataset.iloc[:, 0:4]
# Encoding categorical data
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
labelencoder_X = LabelEncoder()
# I changed this line
X.values[:, 3] = labelencoder_X.fit_transform(X.values[:, 3])
변수 X를 생성하거나 위에서 언급 한대로 인코딩하는 동안 값을 사용합니다.
# Importing the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
# Importing the dataset
# dataset = pd.read_csv('50_Startups.csv')
dataset = pd.DataFrame(np.random.rand(10, 10))
y=dataset.iloc[:, 4].values
X=dataset.iloc[:, 0:4].values
행렬 X
과 Y
벡터를 만드는 동안 values
.
X=dataset.iloc[:,4].values
Y=dataset.iloc[:,0:4].values
확실히 문제를 해결할 것입니다.
행렬 X 및 Y 벡터를 만드는 동안 .Values를 사용하면 문제가 해결됩니다.
y=dataset.iloc[:, 4].values
X=dataset.iloc[:, 0:4].values
.Values를 사용하면 생성 된 행렬의 객체 표현이 생성되고 축이 제거 된 상태로 반환됩니다. 자세한 내용은 아래 링크를 확인하십시오.
https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.values.html
아래 코드와 동일한 오류 (TypeError : unhashable type : 'slice')가 발생했습니다.
included_cols = [2,4,10]
dataset = dataset[:,included_cols] #Columns 2,4 and 10 are included.
데이터 세트 뒤에 iloc을 넣어 아래 코드로 해결되었습니다.
included_cols = [2,4,10]
dataset = dataset.iloc[:,included_cols] #Columns 2,4 and 10 are included.
레이블 인코더에서 X [:, 3]을 X.iloc [:, 3]으로 변경해보십시오.
x 및 y 값이 실행되지 않으므로 먼저이 점을 쓰기 시작하십시오.
import numpy as np
import pandas as pd
import matplotlib as plt
dataframe=pd.read_csv(".\datasets\Position_Salaries.csv")
x=dataframe.iloc[:,1:2].values
y=dataframe.iloc[:,2].values
x1=dataframe.iloc[:,:-1].values
가치의 포인트가 게시되었습니다
반응형
'IT이야기' 카테고리의 다른 글
AngularJ는 부분 템플릿 포함 (0) | 2021.04.11 |
---|---|
경고 받기 : " 'newdata'에는 1 개의 행이 있지만 발견 된 변수에는 32 개의 행이 있습니다." (0) | 2021.04.11 |
열린 파일 개체의 크기 (0) | 2021.04.11 |
쿼리 중 MySQL 서버와의 연결이 끊어졌습니다. (0) | 2021.04.10 |
PHP에서 강제로 메모리 해제 (0) | 2021.04.10 |