Erstellen einer Matrix ergibt einen Fehler
Verfasst: Samstag 12. Dezember 2020, 12:49
Hallo,
ich bin gerade dabei eine Sprächlichkeitsmatrix zu erstellen. Leider erhalte ich einen Fehler. Woran liegt dieser und wie verbessere ich es?
Zunächst entferne ich alle User die weniger als 2 Produkte haben. Anschließend splitte ich mit 0,1% in Train und Test den Dataframe auf. Und diese gesplitten Dataframes gebe ich danach in die Matrix Generierung und hier tritt auch der Fehler auf.
ich bin gerade dabei eine Sprächlichkeitsmatrix zu erstellen. Leider erhalte ich einen Fehler. Woran liegt dieser und wie verbessere ich es?
Zunächst entferne ich alle User die weniger als 2 Produkte haben. Anschließend splitte ich mit 0,1% in Train und Test den Dataframe auf. Und diese gesplitten Dataframes gebe ich danach in die Matrix Generierung und hier tritt auch der Fehler auf.
Code: Alles auswählen
import numpy as np
import pandas as pd
import scipy.sparse as sp
d = {'userid': [0, 0, 0, 1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 5, 5, 5],
'itemid': [715, 845, 98, 12324, 85, 715, 2112, 85, 2112, 852, 102, 85, 2112, 852, 98, 652]}
df = pd.DataFrame(data=d)
print(df)
def remove_purchase_cleanded(df, value):
return df[df['userid'].map(df['userid'].value_counts()) > value].reset_index(drop=True)
df_new = remove_purchase_cleanded(df, 2)
print(df_new)
def splitter(df, split):
indices = np.random.permutation(len(df))
test_size = int(len(df) * split)
test_indices = indices[:test_size]
train_indices = indices[test_size:]
return df.iloc[train_indices], df.iloc[test_indices]
def generate_matrix(df_main, dataframe):
mat = sp.dok_matrix((df_main.shape[0], len(df_main['itemid'].unique())), dtype=np.float32)
for userid, itemid in zip(dataframe['userid'], dataframe['itemid']):
mat[userid, itemid] = 1.0 # here is the error
train, test = splitter(df_new, 0.1)
train = train.sort_values(by=['userid']).reset_index(drop=True)
test = test.sort_values(by=['userid']).reset_index(drop=True)
print(train)
print(test)
train_mat = generate_matrix(df_new, train) # here is the error
test_mat = generate_matrix(df_new, test)
# The error
IndexError: column index (98) out of range