[英]Python “TypeError: unhashable type: 'slice'” for encoding categorical data
我正進入(狀態
TypeError:不可用類型:'slice'
執行以下代碼時,在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]
等切片術語進行訪問。 您必須通過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時,它會創建一個創建矩陣的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.