Sklearn——模型方法和参数使用笔记
本文不定期更新
模型的一般使用流程
- init
- fit(x_train, y_train)
- predict(x_test)
模型输出预测概率
- 方法名称: predict_proba(x_test)
- 该方法对于预测时使用概率或者分数的算法来说直接返回概率值,对于不能返回概率的类来说一般返回交叉验证结果的平均值等
- NB: 概率值
- LR: 逻辑回归的分数
- SVM: 交叉验证生成的平均值, 这里的结果与predict预测结果可能有偏差
关于参数
*
凡事预则立不预则废
为DataFrame的某一列实行OneHot编码
基本实现思路:
实现代码:
1 | from sklearn.preprocessing import OneHotEncoder |
obfs: obfuscating
http
和tls
两种混淆方式,根据需求修改即可词嵌入的发展,NNLM,CBOW,skip-gram
词嵌入(Word Embedding)也称为词向量(Word2Vec): 指的是将词转换成向量的形式
“where”
作为例子来了解子词是如何产生的。首先,我们在单词的首尾分别添加特殊字符“<”
和“>”
以区分作为前后缀的子词。然后,将单词当成一个由字符构成的序列来提取n元语法。例如,当n=3时,我们得到所有长度为3的子词:“<wh>”
“whe”
“her”
“ere”
“<re>”
以及特殊子词“<where>”
。下面是一些模型的详细介绍
层次Softmax Hierarchical Softmax模型
sum
,而不是拼接)Topic Suggestions for Millions of Repositories
(Readme preprocessing and cleanup)
(Generate candidate topics)
(Eliminate noisy topics)
请教师兄
Other features we used were occurrence of user names, n-gram size of a phrase, length of a phrase, and numeric content within a phrase.
)(Score Topics)
The second approach we tried uses the average tf-idf scores of individual words in a phrase weighted by the phrase frequency (if it’s more than one word long) and n-gram size.
(Canonicalize topics)
使用内部词典规范主题形式(Use an in-house dictionary to suggest canonical form of topics)
解决文字层面的差别和变化等,比如下面四个主题
neural-network
neural-networks
neuralnetwork
neuralnetworks
(Eliminate near similar topics)
用基于Jaccard相似性评分的贪心算法(Greedy approach using Jaccard similarity scoring)
motivation:在得到Top-N的主题后,有些主题其实很相似,虽然都有用,但是他们只是在不同粒度描述了同一个主题而已,因此我们需要删除一些重复的,比如下面的例子
machine learning
deep learning
general-purpose machine learning
machine learning library
machine learning algorithms
distributed machine learning
machine learning framework
deep learning library
support vector machine
linear regression
method: 两个短语的相似性计算使用的是基于词的Jaccard相似性(两个短语的差集与并集的比值,因为它对较短的短语很有效,而且分数是[0-1]的,很方便设置阈值(thresholds)),用贪心算法,如果两个主题相似,去除分数较低的那一个,上面的例子去除相似主题后的结果是:
machine learning
deep learning
support vector machine
linear regression
Note: 他们都是struct类型的
type StringHeader struct {
Data uintptr
Len int
}
type SliceHeader struct {
Data uintptr
Len int
Cap int
}
[]byte("string")
string([]byte{1,2,3})
注意:这种实现会有拷贝操作
答案是自己实现指针转换(也可用反射实现头部转换),省去复制数据部分,同时注意这种实现后底层的数据不能再更改了,不然容易引发错误
func String2Slice(s string) []byte {
sp := *(*[2]uintptr)(unsafe.Pointer(&s))
bp := [3]uintptr{sp[0], sp[1], sp[1]}
return *(*[]byte)(unsafe.Pointer(&bp))
}
func BytesToString(b []byte) string {
return *(*string)(unsafe.Pointer(&b))
}
func Slice2String(b []byte) (s string) {
pbytes := (*reflect.SliceHeader)(unsafe.Pointer(&b))
pstring := (*reflect.StringHeader)(unsafe.Pointer(&s))
pstring.Data = pbytes.Data
pstring.Len = pbytes.Len
return
}
func String2Slice(s string) (b []byte) {
pbytes := (*reflect.SliceHeader)(unsafe.Pointer(&b))
pstring := (*reflect.StringHeader)(unsafe.Pointer(&s))
pbytes.Data = pstring.Data
pbytes.Len = pstring.Len
pbytes.Cap = pstring.Len
return
}
show engines;
show variables like '%storage_engine%';
show create table tableName;
alter table tableName engine = innodb;
create table mytable (id int, titlechar(20)) engine = innodb
MySQL数据库有多种引擎,一般使用的是InnoDB(从MySQL5.5.5以后,InnoDB是默认引擎),InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是对比Myisam的存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。
其他的引擎不支持事务等,但是存储空间占的比较小,而且操作比较快一些。
MySQL有多种存储引擎,每种存储引擎有各自的优缺点,可以择优选择使用:MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)、EXAMPLE、FEDERATED、ARCHIVE、CSV、BLACKHOLE。
虽然MySQL里的存储引擎不只是MyISAM与InnoDB这两个,但常用的就是两个。
本文先给出Go语言中struct类型作为函数参数传入的例子,然后给出总结
1 | func changeValue(person Person){ |
注意:struct类型与切片传值方式不同而与数组相同