私は得ています
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を使用すると、作成されたマトリックスのオブジェクト表現が作成され、軸が削除されて返されます。詳細については、以下のリンクを確認してください
https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.values.html
ラベルエンコーダーでX [:、3]をX.iloc [:、3]に変更してみてください
私は以下のコードで同じエラー(TypeError:ハッシュできないタイプ:「スライス」)を受け取っていました:
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.