达观杯_构建模型(一)linearSVM

本文探讨了使用TF-IDF特征结合LinearSVM模型进行文本分类的方法,通过调整参数C实现最优分类效果,并展示了从训练到预测的完整流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

特征:tfidf(word)+tfidf(article)

"""
1.特征:tfidf(word)+tfidf(article)
2.模型:linearsvm
3.参数:C=5
"""

from sklearn.svm import LinearSVC # 支持向量机
from sklearn.calibration import CalibratedClassifierCV
import pandas as pd
import time
import pickle


time_start = time.time()
# 读取特征
with open('tfidf(word+article).pkl','rb') as f:
    x_train, y_train, x_test = pickle.load(f)
# 构建模型
clf = CalibratedClassifierCV(base_estimator=LinearSVC(C=5))
clf.fit(x_train, y_train)

# 保存模型
with open('linearsvm(C=5)_tfidf(word+article).pkl','wb') as f:
    pickle.dump(clf,f)


# 预测结果:分类结果和概率结果
y_test = clf.predict(x_test)
y_test_proba = clf.predict_proba(x_test)


# 保存模型输出的分类文件和概率文件
y_test = [i+1 for i in y_test.tolist()]
y_test_proba = y_test_proba.tolist()

df_result = pd.DataFrame({'id':range(102277),'class':y_test})
df_proba = pd.DataFrame({'id':range(102277),'proba':y_test_proba})


df_result.to_csv('./ls(C=5)_tfidf(word+article).csv',index=False)
df_proba.to_csv('./ls(C=5)_tfidf(word+article)_proba.csv',index=False)

time_end = time.time()
print('共耗时:{:.2f}min'.format((time_end-time_start)/60))

特征:linearsvm-tfidf(word)+lr-tfidf(article)

"""
1.特征:linearsvm-tfidf(word)+lr-tfidf(article)
2.模型:linearsvm
3.参数:C=5
"""

from sklearn.svm import LinearSVC # 支持向量机
from sklearn.calibration import CalibratedClassifierCV
import pandas as pd
import time
import pickle


time_start = time.time()
# 读取特征
with open('linearsvm-tfidf(word)+lr-tfidf(article).pkl','rb') as f:
    x_train, y_train, x_test = pickle.load(f)
# 构建模型
clf = CalibratedClassifierCV(base_estimator=LinearSVC(C=5))
clf.fit(x_train, y_train)

# 保存模型
with open('linearsvm(C=5)_tfidf(linearsvm_w+lr_a).pkl','wb') as f:
    pickle.dump(clf,f)
#或者用 joblib.dump(clf, "文件名.pkl") 保存模型

# 预测结果:分类结果和概率结果
y_test = clf.predict(x_test)
y_test_proba = clf.predict_proba(x_test)


# 保存模型输出的分类文件和概率文件
y_test = [i+1 for i in y_test.tolist()]
y_test_proba = y_test_proba.tolist()

df_result = pd.DataFrame({'id':range(102277),'class':y_test})
df_proba = pd.DataFrame({'id':range(102277),'proba':y_test_proba})


df_result.to_csv('./ls(C=5)_tfidf(ls_w+lr_a).csv',index=False)
df_proba.to_csv('./ls(C=5)_tfidf(ls_w+lr_a)_proba.csv',index=False)

time_end = time.time()
print('共耗时:{:.2f}min'.format((time_end-time_start)/60))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值