回归:连续python
分类:离散算法
1.数据获取 2.数据清洗 3.特征工程 4.预处理 5.选择学习模型 6.机器学习
7.模型部署函数
特征提取:特征工程 处理缺失数据:均值、众数、聚类、丢弃 数据定标:归一化 \(\frac{x-min}{max-min}\) 、标准化 \(\frac{x-均值}{方差}\) 提高模型精度、收敛速度,改变稀疏性质 数据转换:取对数 大类吞小类的:将小类数据加入噪声添加到数据集中去学习
适合低维空间 k通常选奇数 避免打平手 决策边界 交叉验证 在数据较少时提升fold,在计算量容许的状况下弥补数据不足 不能用测试数据来调参 数据量大的状况下使用 KD树 、Locality Sensitivity Hashing近似求解 如何处理数据相关性(?) 权重和距离有关测试
def knn_classify(X, y, testInstance, k): distances = [euc_dis(x, testInstance) for x in X]#计算欧式距离 kneighbors = np.argsort(distances)[:k]#排序获得k个距离最近的邻居 count = Counter(y[kneighbors])#统计不一样类型邻居出现次数 return count.most_common()[0][0]#取出现次数最多的类型
线性回归是利用线性方程的最小二乘函数对一个或多个自变量和因变量之间关系进行建模的方法spa
线性回归的损失函数为凸函数,具备全局最优解。对损失函数求导(梯度法),使得损失函数的导数为0时,获得解析解。code
逻辑回归解决二元(0/1)分类问题逻辑函数$f(x)=\frac{1}{1+e^-x}$排序
似然函数(?)部署
\(P(x|y)(后验)=\frac{P(y|x)(似然)*P(x)(先验)}{PI(y)(通常难计算)}\)
朴素:假设P(y1,y2,y3 ... |x)条件独立 P(y1,y2,y3 ... |x)=P(y1|x)*P(y2|x)*P(y3|x) ...
tfidf(w)=tf(d,w)idf(w) 词频权重 idf(w)=log \(\frac{N}{N(w)}\) N:文章总数 N(w):单词出现次数 避免分母N(w)为0 ,分母加1,分子加v
MultinomialNB 适合向量为整数状况,高斯朴素贝叶斯适合实数但不适合稀疏矩阵
from sklearn.naive_bayes import MultinomialNB from sklearn.metrics import accuracy_score clf = MultinomialNB() # 利用朴素贝叶斯作训练 clf.fit(X_train, y_train) y_pred = clf.predict(X_test) print("accuracy on test data: ", accuracy_score(y_test, y_pred))