IT이야기

범주 형 데이터 인코딩을위한 Python "TypeError : unhashable type : 'slice'"

cyworld 2021. 4. 11. 09:31
반응형

범주 형 데이터 인코딩을위한 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

행렬 XY벡터를 만드는 동안 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 

가치의 포인트가 게시되었습니다

참조 URL : https://stackoverflow.com/questions/43290202/python-typeerror-unhashable-type-slice-for-encoding-categorical-data

반응형