python训练数据集_python – 如何训练大型数据集进行分类

我有一个1600000推文的训练数据集.我该如何训练这类巨大的数据.

我尝试过使用nltk.NaiveBayesClassifier.如果我跑步,训练需要5天以上.

def extract_features(tweet):

tweet_words = set(tweet)

features = {}

for word in featureList:

features['contains(%s)' % word] = (word in tweet_words)

return features

training_set = nltk.classify.util.apply_features(extract_features,tweets)

NBClassifier = nltk.NaiveBayesClassifier.train(training_set) # This takes lots of time

我该怎么办?

我需要使用SVM和朴素的bayes对我的数据集进行分类.

我想使用的数据集:Link

样本(培训数据集):

Label Tweet

0 url aww bummer you shoulda got david carr third day

4 thankyou for your reply are you coming england again anytime soon

示例(测试数据集):

Label Tweet

4 love lebron url

0 lebron beast but still cheering the til the end

^

I have to predict Label 0/4 only

如何有效地训练这个庞大的数据集?

解决方法

根据对特征提取的精心提出,您可以使用scikit库中的tfidvectorizer从推文中提取重要的单词.使用默认配置,再加上一个简单的LogisticRegression,它给我0.8精度.希望有所帮助.

以下是如何使用它来解决问题的示例:

train_df_raw = pd.read_csv('train.csv',header=None,names=['label','tweet'])

test_df_raw = pd.read_csv('test.csv','tweet'])

train_df_raw = train_df_raw[train_df_raw['tweet'].notnull()]

test_df_raw = test_df_raw[test_df_raw['tweet'].notnull()]

test_df_raw = test_df_raw[test_df_raw['label']!=2]

y_train = [x if x==0 else 1 for x in train_df_raw['label'].tolist()]

y_test = [x if x==0 else 1 for x in test_df_raw['label'].tolist()]

X_train = train_df_raw['tweet'].tolist()

X_test = test_df_raw['tweet'].tolist()

print('At vectorizer')

vectorizer = TfidfVectorizer()

X_train = vectorizer.fit_transform(X_train)

print('At vectorizer for test data')

X_test = vectorizer.transform(X_test)

print('at Classifier')

classifier = LogisticRegression()

classifier.fit(X_train,y_train)

predictions = classifier.predict(X_test)

print 'Accuracy:',accuracy_score(y_test,predictions)

confusion_matrix = confusion_matrix(y_test,predictions)

print(confusion_matrix)

Accuracy: 0.8

[[135 42]

[ 30 153]]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值