我正在使用 python 制作一個簡單的資料挖掘應用程式,并在 Google Colab 中對其進行編碼。我在我的函式上使用了 elif,這是代碼
def data_pred(data):
# split(data)
X_train, y_train, X_test, y_test = split(data)
linreg = LinearRegression()
linreg.fit(X_train, y_train)
y_preds = linreg.predict(X_test)
for x in range(17):
y_test = np.insert(y_test, len(y_test), y_preds[len(y_preds)-1])
X_test = np.insert(X_test, len(X_test), y_test[len(X_test)-1])
X_test = np.array(X_test).reshape(X_test.size, 1)
y_preds = linreg.predict(X_test)
plt.scatter(X_test, y_test)
plt.scatter(X_test, y_preds, color='green')
plt.plot(X_test, y_preds, color="red")
plt.xlabel("X axis")
plt.ylabel("Y axis")
plt.show()
print("nilai slope/koef/a:",linreg.coef_)
print("nilai intercept/b :",linreg.intercept_)
print('Data hasil prediksi :', y_preds)
print('Data aktual :',y_test)
print()
print('MAPE : ', mape(y_test, y_preds))
if data["Nama Golongan"][0] == "INDUSTRI":
golongan = data.loc[0:23, "Nama Golongan"]
elif data["Nama Golongan"][44] == "INSTANSI PEMERINTAH":
golongan = data.loc[44:67, "Nama Golongan"]
elif data["Nama Golongan"][88] == "NIAGA KECIL":
golongan = data.loc[88:111, "Nama Golongan"]
elif data["Nama Golongan"][132] == "RUMAH MENENGAH":
golongan = data.loc[132:155, "Nama Golongan"]
elif data["Nama Golongan"][176] == "RUMAH MEWAH":
golongan = data.loc[176:119, "Nama Golongan"]
elif data["Nama Golongan"][220] == "SOSIAL KHUSUS":
golongan = data.loc[220:243, "Nama Golongan"]
elif data["Nama Golongan"][264] == "TOTAL PERBULAN":
golongan = data.loc[264:287, "Nama Golongan"]
more code...
當我跑步時
a = this[this['Nama Golongan'] == 'INDUSTRI']
data_pred(a)
我得到圖形情節和沒有錯誤的結果。但是,當我運行此代碼時
b = this[this['Nama Golongan'] == 'INSTANSI PEMERINTAH']
data_pred(b)
我明白了
KeyError Traceback (most recent call last)
/usr/local/lib/python3.7/dist-packages/pandas/core/indexes/base.py in get_loc(self, key,
method, tolerance)
2897 try:
-> 2898 return self._engine.get_loc(casted_key)
2899 except KeyError as err:
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.Int64HashTable.get_item()
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.Int64HashTable.get_item()
我認為這是elif代碼的原因,但我不知道為什么。誰能告訴我為什么以及如何解決它?請幫幫我,謝謝。
uj5u.com熱心網友回復:
好的,我終于看到問題了。您正在提取資料幀的子集并將其傳遞給此檔案。所以,data["Nama Golongan"][44]指的是索引 44,因為索引通過子集進行。
問題是data.loc不使用索引。它是嚴格的行號。它們都將從 0 開始。如果您只需要前 23 行,則根本不需要if序列。用這個替換整個事情:
golongan = data.loc[0:23, "Nama Golongan"]
使用 時loc,第一行始終為 0。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/392020.html
