第8届泰迪杯C题问题总结
文章目录
- 写作模板问题
- 从网上下载了一个牛逼哄哄的模板,用 Winedit 打开时,却跳出错误弹出。我顿时懵逼了!!!
- 编译模板时,跳出 Improper alphabetic constant 错误
- 编译时,跳出!Extra \else
- 使用 \begin{align} 爆出未定义
- 使用 \begin{align} 出现 paragraph ended before \align was complete
- Excel使用宏
- 标签出现乱码
- 词袋模型实现
- CountVectorizer
- HanLP
- Gensim
- 自己写一个
- 结合Gensim与sklearn
- 编程中的难题
- 如何拼接一个 np.array 呢?
- 如何按条件删除 np.array的某些列呢?
- 如何根据索引修改特定位置的 np.array元素呢?
- 如何按列和某种方法修改dataframe呢?
- 从np.array的重复数据和重复次数中,组合成一个字典,数据为Key,次数为Value
- 使用数列,按条件修改dataframe的某一列,两个列必须等长度
- dataframe 根据某一列排序
- df 的遍历
- 时间戳
- 论文写作
- 脚注
- 页眉页脚
- 题注字体与位置
- 弄个附件
写作模板问题
从网上下载了一个牛逼哄哄的模板,用 Winedit 打开时,却跳出错误弹出。我顿时懵逼了!!!
解决办法:
- 点击 WinEdt 菜单栏 Options, 选择 Preferences
- 在打开的界面中, 选择 Unicode, 复选 (若没选) Enable UTF-8 Format for Modes, 并且在下方紧挨着的方框中加入 TeX; (要有分号, 还必须是 英文模式的 (也就是 半角的)), 保存即可.
第二种方法是使用记事本打开,在保存为相同名字的文件,顶替掉他。注意,需要选择编码方式为UTF-8。
编译模板时,跳出 Improper alphabetic constant 错误
在 \documentclass{ctexbook}中少写了一个[UTF8]
编译时,跳出!Extra \else
实际上是因为在 \cite 进行应用时,{} 内出现中文。所以,必须修改 bib 文件,将相应的引用标签改为英文。
使用 \begin{align} 爆出未定义
\usepackage{amsmath}
使用 \begin{align} 出现 paragraph ended before \align was complete
一般是公式错误,我的是花括号和圆括号匹配了。还有就是普通花括号没有转义
Excel使用宏
在加载项中即可用
标签出现乱码
哎~~我使用的是:\documentclass[UTF8,11pt]{ctexart} 用了很多方法,比如 \begin{CJK*}{GBK}{}什么的,都不管用。要么出现错误,要么还是乱码。
最后查了一下,用Xlate引擎来编码就行了,pdf照样输出。
词袋模型实现
在网上翻了一遍,中文 BOW 模型的实现资料是在太少了。一种方法使用:
CountVectorizer
from sklearn.feature_extraction.text import CountVectorizer
但发现中文根本不能用!!
HanLP
求助与 hanlp,可是我用的 python,而且根本不懂怎么和 Java 交互。虽然何晗的书上有讲,但我死活用不动!!
Gensim
于是找到了:from gensim import corpora
下载了 gensim,原本以为能解决了,可是他的输出却是这样的:
[(0, 2), , (3, 1), (4, 1), (5, 2), (7, 1), (8, 1)]
[(0, 1), (1, 1), (2, 1), (4, 1), (5, 2), (6, 1), (8, 1)]
换句话说,它只保留了非 0 元素。虽然这是解决稀疏矩阵的好方法,但是 Out of Control 了呀1!!!!!!
自己写一个
于是只好自己写一个了!
分词部分就不想讲了,反正分词之后得到一个包含列表的列表。子列表的每一个元素是一个词组。
之后,对包含列表的列表 texts,可以:
all_list = []
for text in texts:all_list += text
corpus = set(all_list)
print(corpus)corpus_dict = dict(zip(corpus, range(len(corpus))))
print(corpus_dict)def vector_rep(text, corpus_dict):vec = []for key in corpus_dict.keys():if key in text:vec.append(text.count(key))else:vec.append(0)# vec = sorted(vec, key= lambda x: x[0])return veccorpus = []
for text in texts:vec = vector_rep(text, corpus_dict)corpus.append(vec)
然而问题来了,由于矩阵太大了,而过程中没有压缩,查看了这个算法,大概需要 40GB 的内存。因此,我在运行的时候,跑了很久,系统跳出内存不足,于是自动释放了程序…再次失败
结合Gensim与sklearn
由于Gensim 储存的是一个伪压缩过的稀疏矩阵。而接下来的处理中,我用到的必须是 np.array。于是,可否考虑将 gensim 处理过的结果先转换为字典,在用 sklearn 的** DictVectorizer** 转换为 np.array 的压缩稀疏矩阵呢?这样,就不用用到 40 GB的内存了。只需要几十兆就可以咯~ 代码如下:
from gensim import corpora
dictionary = corpora.Dictionary(X)
joblib.dump(dictionary,r'D:\桌面\比赛\C题全部数据\map.pkl') #保存corpus = [dictionary.doc2bow(text) for text in X]corpus_arr = []
for n in corpus:n = np.array(n)corpus_arr.append(n)
corpus = np.array(corpus_arr)data = []
for i in corpus:data.append(dict(i))from sklearn.feature_extraction import DictVectorizer
vec = DictVectorizer(sparse=True,dtype=np.uint8)
data_new = vec.fit_transform(data)
于是终于解决,得到一个压缩的稀疏矩阵 data_new 了
编程中的难题
如何拼接一个 np.array 呢?
使用 np.vstack (列拼接)或 np.hstack(行拼接)。函数可以接受的参数为一个列表 或 数组。列表中包含所需要拼接的矩阵即可。
如何按条件删除 np.array的某些列呢?
使用 np.argwhere 和 np.delete(axis=1)
比如
index = np.argwhere(test>condition) #test为源 np.array
np.delete(index,axis=1) #删除行用 axis=0
如何根据索引修改特定位置的 np.array元素呢?
假如有 index 索引数组,测试数组为 test
则可以直接test[index] = xx
即可。
如果是对矩阵进行修改,可以用:test[i][index]=xx
如何按列和某种方法修改dataframe呢?
我想要将dataframe某一列(都是字符串)剔除掉 空格、制表符和换行符。已知剔除方法为:
''.join(x.split())
其中 x 为该列某一行,但是我不想用 for 循环遍历,怎么办呢?可以用:
f = lambda x: ''.join(x.split())
X['留言详情'] = X['留言详情'].apply(f)
从np.array的重复数据和重复次数中,组合成一个字典,数据为Key,次数为Value
可以用
unique,cnts = np.unique(xx,return_count=True)
dict_new = dict(zip(unique,cnts)
使用数列,按条件修改dataframe的某一列,两个列必须等长度
df.loc[df['条件列']==condition,'所需列'] = 目标列
dataframe 根据某一列排序
排序后,使用 index 遍历 dataframe 遍历的是已经排序好的 dataframe:
df.sort_value(by=‘列名’,ascending=False)
df 的遍历
可以用
for i in df.index:df.at[i,j]
来遍历 df 的索引。
用
for i in df.itertuples():
遍历 df 的行。
时间戳
一个好用的包:import datetime as dt
可以将字符串转换为时间戳:
try:dataset_raw.at[i,'留言时间']=dt.datetime.strptime(dataset_raw.at[i,'留言时间'],"%Y/%m/%d %H:%M:%S")
except:pass
两个时间戳可以相减,并取其天数:
(t1-t2).days #即可!!!
论文写作
脚注
我使用 latex 写的。在参赛过程中,我学到了:
脚注的使用方法:Fisher’C\footnote{宇宙工业大学,自动控制系自动化专业,可可可}
此时,Fisher‘C 会在文档中生成一个脚注。内容是 宇宙工业大学,自动控制系自动化专业,可可可
页眉页脚
页脚页眉可用\usepackage{fancyhdr} %页眉页脚设置
来设置。
然后\pagestyle{fancy}
即可。
不过我用的是\pagestyle{plain}
,这个比较好。
当然,如果使用 fancy,则会添加一条小横线,并且在左边弄个小标题(标题从文中来)。当然,也可以通过如下代码设置不可见和其他格式:
\pagestyle{fancy}
\lhead{}
\chead{}
\rhead{}
\lfoot{From: K. Grant}
\cfoot{To: Dean A. Smith}
\rfoot{\thepage}
\renewcommand{\headrulewidth}{0.4pt}
\renewcommand{\footrulewidth}{0.4pt}
题注字体与位置
写的时候,题注贴脸了。并且题注的字体大小与正文差不多,所以必须改,怎么改?
\usepackage[margin=0pt,skip=0pt,font=small,labelfont=bf,
labelsep=period]{caption} %设置caption字体字号。
弄个附件
\begin{appendix}
{\centering\section{Appendix}}
\subsection{hhh}\end{appendix}
第8届泰迪杯C题问题总结相关推荐
- 智能阅读模型的构建(第六届泰迪杯C题)
项目描述: 构建智能阅读模型主要通过两个方法来实现,第一个是TF-IDF的变种--TFC-ICF,TFC-ICF较于TF-IDF是将一个问题的所有答案看成一个整体,类比于TF-IDF文本分类的文件夹, ...
- 第九届泰迪杯A题(1)
分析:统计出造假和非造假的个数并作图 正负样本可视化 import pandas as pd import matplotlib.pyplot as plt import numpy as np# 查 ...
- 第七届泰迪杯挑战赛C题
第七届"泰迪杯"数据挖掘挑战赛C题赛题和数据 网盘链接: https://pan.baidu.com/s/1VRIHBLqaTsfOMLnVmibo5A 提取码:L6X6
- 【第十届“泰迪杯”数据挖掘挑战赛】B题:电力系统负荷预测分析 31页省一等奖论文及代码
相关链接 (1)[第十届"泰迪杯"数据挖掘挑战赛]B题:电力系统负荷预测分析 问题一Baseline方案 (2)[第十届"泰迪杯"数据挖掘挑战赛]B题:电力系统 ...
- 【第十届“泰迪杯”数据挖掘挑战赛】B题:电力系统负荷预测分析 问题二 时间突变分析 Python实现
目录 相关链接 完整代码下载链接 1 定义绘图函数 2 通过对原始测量应用阈值来查找异常值 3 手动设置阈值 4 使用分位数设置阈值 5 3Sigma原则(IQR) 6 设定分位数 6.1 导入数据 ...
- 2020年泰迪杯C题智慧政务中的文本数据挖掘应用--论文+全部源码分享
5.2问题二模型的建立与求解 本题要求针对热点问题进行挖掘,主要目的是从群众留言中挖掘出热点问题.也就是给每一条留言都量化一个热度指数.并且根据热度指数进行排序,从而获取热度较高的评价问题.对于问题热 ...
- 分享篇:第十届“泰迪杯”数据挖掘挑战赛-农田害虫图像识别(特等奖)
第十届"泰迪杯" 数据挖掘挑战赛优秀作品-农田害虫图像识别--特等奖 实验结果分析 4.1.1 实验配置 本篇论文的实验都是基于 Ubuntu 系统下进行,使用 GPU 和 CPU ...
- 【第十一届泰迪杯B题产品订单的数据分析与需求预测产品订单的数据分析与需求预测 】第二大问代码分享+解题思路(EDA数据再探索+LightGBM模型)
[第十一届泰迪杯B题产品订单的数据分析与需求预测]第二大问代码分享+解题思路(EDA数据再探索+LightGBM模型) 写在前面: 拖了这么长时间,一方面是我在找实习面试准备.另一方面是在做第二问 ...
- 第十届“泰迪杯”比赛B题解题思路及代码论文
今年大二,因为对编程感兴趣入坑,算下来自学编程快要一年了,了解了关于计算机的很多方向,暑假偶然间了解到数据分析和挖掘,觉得挺有趣的就想深入学习以下,于是开始学习pandas,然后机器学习,并在天池上做 ...
最新文章
- MPB:地大郭东毅等-一种针对重金属污染土壤的高效DNA提取方法
- 软工实践第三次作业(结对第一次作业)
- CSS 实现图片横向拖动
- OpenCV在图像中寻找轮廓的实例(附完整代码)
- 2、Redis入门介绍
- HDU1215 七夕节(模拟 数学)
- vue组件(Vue+webpack项目实战系列之三)
- 北京大学计算机语言学,基于认知的汉语计算语言学研究_袁毓林pdf
- V-by-one 与lvds
- WP-CONTENT/UPLOADS的777,775,744,644,444文件权限设置
- mysql脏页处理方法_mysql刷脏页的一次总结
- 解决谷歌浏览器Chrome不能播放央视新闻视频的问题
- c# 中 event 和 delegate 的区别
- Linux系统运维与架构设计之Linux概述
- android 音乐播放 启动方式 (3)服务通过发送广播来控制activity显示进度等
- 熊猫的python小课_老熊的三分地-Oracle及数据恢复
- 艾宾浩斯遗忘曲线PHP,艾宾浩斯遗忘曲线
- 本科计算机 出国可以学营养学吗,美国营养学专业哪些大学比较好 十所美国营养...
- java登陆界面中关于JDBC的一个问题
- 魔漫相机任晓倩:我是这样说服马云投资千万美金的
热门文章
- mysql outer apply_CROSS APPLY和 OUTER APPLY 区别详解
- 线性代数-MIT 18.06-7(a)
- CString查找子字符串
- KiCad 5.1.6 泪滴插件安装与使用
- 再补充三种内网穿透的方法:ngrok 、ngrok.cc、IOEE
- Unity3D编辑器扩展--自定义创建圆锥体
- access通过身份证号提取性别_Access计算根据身份证号码字段计算年龄和性别的表达式,最好是还能确定户籍地址,该在什么地方输入?...
- 汽车VIN码与二手车市场
- 大唐长安人杜环在两河流域, 耶路撒冷和北非的行程
- SMBMS超市订单管理系统(一)