仿照“sklearn"的API格式,自己写了一个小型的”sklearn“。
# 模型训练
clf.fit(X_train,y_train)
# 模型预测
clf.predict(X)
# 测试集score
clf.score(X_test,y_test)
算法 | 代码实现 | 博客 |
---|---|---|
KNN | 排序法实现:knn.py KDTree实现: KDTree.ipynb |
KNN原理及代码实现——以irs为例 KDTree实现KNN算法 |
PLA | 详见pla.py | 感知机原理及代码实现 |
Logistic Regression | 详见lr.py | 逻辑回归算法原理以及代码实现 |
Decision Tree | ID3实现: MyDecisionTree.ipynb C4.5实现: C4.5DecisionTree.ipynb Cart实现: CART-DT.ipynb |
决策树算法原理以及ID3算法代码实现 决策树算法原理以及cart代码实现 |
Naive Bayes | mybayes.ipynb | 朴素贝叶斯原理以及代码实现 |
SVM | 采用cvxopt工具求解: SVC.ipynb svm.py SMO算法实现:SMO.ipynb |
支持向量机原理以及代码实现 支持向量机SMO代码实现 |
MLP | 支持自定层数,自定义损失函数等特性:mlp | 多层感知机及代码实现 |
Adaboost | 元模型为某个特征上”切一刀“,详见 myAdaboost.ipynb | Adaboost原理以及代码实现 |
CNN | cnn.py | |
Linear Regression | 详见 linear regression | 线性回归原理以及代码实现 |
PCA | 详见 PCA | PCA算法以及代码实现 |
def create_clfs():
clfs = {
"pla":PLA(),
"lr":LogisticRegression(),
"knn":KNNclassifier(5),
"bayes":Bayes(),
"cartdt":CartDT(),
"adaboost":MyAdaboost(100),
"svm-linear":SVM(kind="linear"),
"svm-gaussian":SVM(kind="gaussian")
}
return clfs
clfs = create_clfs()
results = {"name":[],"train-score":[],"test-score":[]}
for name,clf in clfs.items():
# logistic—regression 的 label 是 0和1,其余都是-1和1
(train_y,test_y) = (y_train,y_test) if name in ["lr","bayes"] else (y_train_neg,y_test_neg)
clf.fit(X_train,train_y)
train_score = clf.score(X_train,train_y)
test_score = clf.score(X_test,test_y)
results["name"].append(name)
results["train-score"].append(train_score)
results["test-score"].append(test_score)
print(f"{name}-{train_score:.2f}-{test_score:.2f}")
结果