मैं एक आधारभूत मॉडल बनाने की कोशिश कर रहा हूं: कोसाइन समानता (उपयोगकर्ता-आधारित) के साथ KNNBasic। मैंने ट्रेन टेस्ट स्प्लिट किया है। मैं यहां यथासंभव विस्तृत रहूंगा।

रेटिंग डेटा प्रीप्रोसेसिंग:

sample_clean = sample.drop('Time', axis=1) #dropping time stamp
class MyDataset(dataset.DatasetAutoFolds):
     #this function creates a surprise friendly dataset
     #this function already has folds built into it for cross-validation
     self.raw_sample = [(uid, pid, r, None) for (uid, pid, r) in zip(sample_clean['UserId'], sample_clean['ProductId'], sample_clean['Score'])]
     self.reader = reader

मैं तब अपने पाठक को सहज करता हूं

reader = Reader(line_format = 'user item rating', rating_scale=(0,5))

मैं फिर अपने नमूना_क्लीन डेटाफ्रेम को एक आश्चर्यजनक अनुकूल डेटासेट में पार्स करता हूं

surprise_sample = MyDataset(sample_clean, reader)

मैं प्रारूप की जांच करता हूं:

type(surprise_sample)

मुझे का आउटपुट मिलता है

_main_.MyDataset

मैं raw_ratings का एक कॉलम बनाने और इसे sample_clean से निकालने के लिए आगे बढ़ता हूं:

raw_ratings = sample_clean.Score

इसके बाद, मैं एक ट्रेन सत्यापन विभाजन करता हूं जो ठीक काम करता है।

#test data
test_threshold = int(.85*len(sample_clean)
train_sample = sample_clean[:test_threshold]
test_raw_sample = sample_clean[test_thresholds:]

#ट्रेन डेटा

train_threshold = int(.8*len(train_sample))
validation_raw_sample = train_sample[train_threshold:]
train_raw_sample = train_sample[:train_threshold]

मैं फिर यह देखने के लिए जांच करता हूं कि मेरे ट्रेन परीक्षण विभाजन के दौरान कोई डेटा खो नहीं गया है:

len(train_raw_sample) + len(test_raw_sample) + len(validation_raw_sample)
#output is 5000 which is what I wanted

मुझे नीचे समस्या है, मैं एक आधारभूत मॉडल बना रहा हूं जो कोसाइन समानता के साथ KNNBasic है (उपयोगकर्ता-आधारित)

#cosine similarity
sim_cos = {'name': 'cosine', 'user_based': True}
#instantiate reader
basic_user = knns.KNNBasic(sim_options = sim_cos)
#fit the model 
simcos_crossval_user = cross_validate(basic_user, sample_clean, measures=['rmse', 'mae'], cv=3, return_train_measure=True, n_jobs=-1, verbose=True)

कोड की यह आखिरी पंक्ति काम नहीं कर रही है, मुझे इसकी आउटपुट त्रुटि मिलती है:

AttributeError: 'DataFrame' object has no attribute 'raw_ratings'

कृपया मुझे यह पता लगाने में मदद करें कि मैं क्या गलत कर रहा हूं। धन्यवाद।

0
aneeliabedelia 21 अक्टूबर 2020, 14:35

1 उत्तर

सबसे बढ़िया उत्तर

एक विकल्प है जिसे आप कस्टम डेटाफ्रेम को आश्चर्यजनक अनुकूल डेटासेट में पार्स करने का प्रयास कर सकते हैं:

reader = Reader(line_format = 'user item rating', rating_scale=(0,5))

कॉलम उपयोगकर्ता आईडी, आइटम आईडी और रेटिंग (उस क्रम में) के अनुरूप होना चाहिए:

data = Dataset.load_from_df(sample_clean [['userId', 'productId', 'Score']], reader)

आप अधिक विवरण यहां प्राप्त कर सकते हैं।

0
Ank 28 नवम्बर 2020, 15:47