标签:mit python语句 解压 矩阵 regress label 模型 选择 nts
在竞赛主页下载好数据集利用pandas打开:
#coding=utf-8
import pandas as pd
#my_font = font_manager.FontProperties(fname="C:\Windows\Fonts\msyh.ttc")
#设置显示范围
pd.set_option(‘display.max_columns‘, 1000)
pd.set_option(‘display.width‘, 1000)
pd.set_option(‘display.max_colwidth‘, 1000)
csvframe = pd.read_csv(‘data_list_0715.csv‘,encoding=‘gbk‘,header=0)
print(csvframe)
注:在数据集命名时尽量不要使用n为开头字母,会导致python语句识别错误.
读取完成后可看到给出的三个数据集的链接:
0 train_set.csv.zip 训练集数据(选手需要自行解压) 236.11MB https://tianchi-competition.oss-cn-hangzhou.aliyuncs.com/531810/train_set.csv.zip
1 test_a.csv.zip 测试集A榜数据(选手需要自行解压) 59.12MB https://tianchi-competition.oss-cn-hangzhou.aliyuncs.com/531810/test_a.csv.zip
2 test_a_sample_submit.csv 测试集A榜提交样例 97.66KB https://tianchi-competition.oss-cn-hangzhou.aliyuncs.com/531810/test_a_sample_submit.csv
下载后即可得到题目所给数据集,分别为训练集,测试集与样例。
以下是部分数据集:
0 2\t2967 6758 339 2021 1854 3731 4109 3792 4149...
1 11\t4464 486 6352 5619 2465 4802 1452 3137 577...
2 3\t7346 4068 5074 3747 5681 6093 1777 2226 735...
3 2\t7159 948 4866 2109 5520 2490 211 3956 5520 ...
4 3\t3646 3055 3055 2490 4659 6065 3370 5814 246...
多分类问题的机器学习竞赛常常将F1-score作为最终的测评方法。
其中P(Precision)为精确率,R(recall)为召回率。F1-score认为精确率与召回率同等重要。另外还有其他类似的评价标准:
#coding=utf-8
from sklearn.metrics import f1_score
#分类器预测得到的类别
y_pred = [0, 1, 1, 1, 2, 2]
#目标的真实类别
y_true = [0, 1, 0, 2, 1, 1]
print(f1_score(y_true, y_pred, average=‘macro‘))#如果不考虑类别的不平衡性,计算宏平均,则使用‘macro’
print(f1_score(y_true, y_pred, average=‘weighted‘))#考虑类别的不平衡性,需要计算类别的加权平均
得到结果:
0.3333333333333333
0.38888888888888884
特征提取包括特征选择与特征权重运算,其中,特征选择是,根据某个评价指标独立地对原始特征项(词项)进行评分排序,从中选择得分最高的一些特征项(词项)进行评分排序,从中选择得分最高的一些特征项,过滤掉其余特征项。
TF-IDF主要用于特征权重计算,它表示一个词的重要度与在类别内的词频成正比,与所有类别出现的次数成反比。
代码实现:
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import TfidfTransformer
x_train = [‘TF-IDF 主要 思想 是‘, ‘算法 一个 重要 特点 可以 脱离 语料库 背景‘,
‘如果 一个 网页 被 很多 其他 网页 链接 说明 网页 重要‘]
x_test = [‘原始 文本 进行 标记‘, ‘主要 思想‘]
# 该类会将文本中的词语转换为词频矩阵,矩阵元素a[i][j] 表示j词在i类文本下的词频
vectorizer = CountVectorizer(max_features=10)
# 该类会统计每个词语的tf-idf权值
tf_idf_transformer = TfidfTransformer()
# 将文本转为词频矩阵并计算tf-idf
tf_idf = tf_idf_transformer.fit_transform(vectorizer.fit_transform(x_train))
# 将tf-idf矩阵抽取出来,元素a[i][j]表示j词在i类文本中的tf-idf权重
x_train_weight = tf_idf.toarray()
# 对测试集进行tf-idf权重计算
tf_idf = tf_idf_transformer.transform(vectorizer.transform(x_test))
x_test_weight = tf_idf.toarray() # 测试集TF-IDF权重矩阵
print(‘输出x_train文本向量:‘)
print(x_train_weight)
print(‘输出x_test文本向量:‘)
print(x_test_weight)
可得到结果:
[[0.70710678 0. 0.70710678 0. 0. 0.
0. 0. 0. 0. ]
[0. 0.3349067 0. 0.44036207 0. 0.44036207
0.44036207 0.44036207 0. 0.3349067 ]
[0. 0.22769009 0. 0. 0.89815533 0.
0. 0. 0.29938511 0.22769009]]
输出x_test文本向量:
[[0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 1. 0. 0. 0. 0. 0. 0. 0.]]
FastText是Facebook AI Research在16年开源的一种文本分类器。 其特点就是fast。相对于其它文本分类模型,如SVM,Logistic Regression等模型,fastText能够在保持分类效果的同时,大大缩短了训练时间。
标签:mit python语句 解压 矩阵 regress label 模型 选择 nts
原文地址:https://www.cnblogs.com/dingdingdongs/p/13357066.html