簡體   English   中英

Python“TypeError:unhashable type:'slice'”用於編碼分類數據

[英]Python “TypeError: unhashable type: 'slice'” for encoding categorical data

我正進入(狀態

TypeError:不可用類型:'sl​​ice'

執行以下代碼時,在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是一個數據幀,無法通過X[:, 3]等切片術語進行訪問。 您必須通過ilocX.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時,它會創建一個創建矩陣的Object表示,並在移除軸時返回。 請查看以下鏈接以獲取更多信息

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 

價值點已經發布

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM