本文是一个随时使用sklearn时可供参考的手册。我有使用sklearn的基础,且准备后期直接用sklearn官方的教程文档参考撰写系统性学习sklearn包使用方法的sklearn用户教程一文,因此本文就不介绍基础了。
sklearn官网:scikit-learn: machine learning in Python — scikit-learn 0.16.1 documentation
文章目录
1. 分类
1.1 KNN
from sklearn.neighbors import KNeighborsClassifier
neigh=KNeighborsClassifier()
neigh.fit(x,y)
#测试
result=neigh.predict(test_x)
KNeighborsClassifier入参:
- n_neighbors:KNN的N
1.2 SVM
from sklearn.svm import SVC
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import make_pipeline
X = np.array([[1, 2], [1, 4], [1, 0], [4, 2], [4, 4], [4, 0]])
y=np.array([0,1,1,2,2,2])
clf=make_pipeline(StandardScaler(),SVC())
clf.fit(X,y)
predict_result=clf.predict(np.array([[2, 3], [2, 5], [5, 5]]))
print(predict_result)
1.3 逻辑回归
from sklearn.linear_model import LogisticRegression
model = LogisticRegression()
model.fit(train_vector, train['label'])
test['label'] = model.predict(test_vector)
2. 聚类
2.1 KMeans
from sklearn.cluster import KMeans
kmeans=KMeans() #新建KMeans对象,并传入参数
kmeans.fit(case_feature) #进行训练
kmeans.labels_ #K均值对象的所有训练集的标签
KMeans()
方法的入参:
- n_cluster:簇数
- init:初始化质心的方法。可以用字符串(初始化的算法)或者矩阵(初始化的质心)作为输入。
- n_init:用多少个不同的随机种子重新运行K均值聚类算法。
需要注意的是,n_cluster和n_init如果一起用的话,n_cluster会覆盖n_init,也就是强制n_init=
,K均值聚类就只会运行一次(K均值嘛,如果质心确定了,那后面的也就固定了……这是原理部分本文就不讲了)
会报这个警告:
(本知识点的参考资料:python - k-means with selected initial centers - Stack Overflow)
3. 指标
3.1 常用分类指标
from sklearn.metrics import accuracy_score,precision_score,recall_score,f1_score
#y是标签,result是预测结果(经predict之后的数值输出)
#值得一提的是,单标签和多标签都能实现。单标签就各自只要一列数据就行
print(accuracy_score(y,result))
print(precision_score(y,result,average='macro'))
print(recall_score(y,result,average='macro'))
print(f1_score(y,result,average='macro'))
4. 异常检测
4.1 local outlier factor (LOF)
原理讲解:机器学习-异常检测算法(二):Local Outlier Factor - 知乎
大概来说就是把那种跟其他点都很疏远的点视为异常点。
5. 预处理
5.1 文本特征提取
- 词袋模型
from sklearn.feature_extraction.text import CountVectorizer corpus #由字符串组成的列表 vector = CountVectorizer().fit(corpus) train_vector = vector.transform(corpus)
- TF-IDF模型
from sklearn.feature_extraction.text import TfidfVectorizer tfidf=TfidfVectorizer(max_features=500) corpus #有字符串组成的列表 sp_tfidf=tfidf.fit_transform(corpus) #返回稀疏矩阵,每一行是语料中对应文档的表示向量
6. 其他
- 过滤警告信息
from warnings import simplefilter
from sklearn.exceptions import ConvergenceWarning
simplefilter("ignore", category=ConvergenceWarning)