目录
基于iris莺尾花数据集利用Perceptron感知机算法实现二分类
相关文章
DL之Perceptron&AdalineGD:基于iris莺尾花数据集利用Perceptron感知机和AdalineGD算法实现二分类
DL之Perceptron&AdalineGD:基于iris莺尾花数据集利用Perceptron感知机和AdalineGD算法实现二分类实现
基于iris莺尾花数据集利用Perceptron感知机算法实现二分类
设计思路
输出结果
1. <bound method DataFrame.info of SepalLength_cm SepalWidth_cm ... PetalWidth_cm label 2. 0 5.1 3.5 ... 0.2 Iris-setosa 3. 1 4.9 3.0 ... 0.2 Iris-setosa 4. 2 4.7 3.2 ... 0.2 Iris-setosa 5. 3 4.6 3.1 ... 0.2 Iris-setosa 6. 4 5.0 3.6 ... 0.2 Iris-setosa 7. .. ... ... ... ... ... 8. 145 6.7 3.0 ... 2.3 Iris-virginica 9. 146 6.3 2.5 ... 1.9 Iris-virginica 10. 147 6.5 3.0 ... 2.0 Iris-virginica 11. 148 6.2 3.4 ... 2.3 Iris-virginica 12. 149 5.9 3.0 ... 1.8 Iris-virginica 13. 14. [150 rows x 5 columns]> 15. SepalLength_cm SepalWidth_cm ... PetalWidth_cm label 16. 0 5.0 3.5 ... 0.3 Iris-setosa 17. 1 6.3 2.5 ... 1.9 Iris-virginica 18. 2 4.4 3.0 ... 0.2 Iris-setosa 19. 3 5.7 2.8 ... 1.3 Iris-versicolor 20. 4 6.8 3.2 ... 2.3 Iris-virginica 21. 22. [5 rows x 5 columns] 23. Iris-setosa 50 24. Iris-versicolor 50 25. Iris-virginica 50 26. Name: label, dtype: int64 27. (150, 2) 28. [5, 0, 0, 0, 0, 0, 0, 0, 0, 0] 29. CE_res (37, 0, 0, 0) 30. recall precision accurency 31. 1.0 1.0 1.0
核心代码
1. class Perceptron(object): 2. def __init__(self, rate = 0.01, niter = 10): 3. self.rate = rate 4. self.niter = niter 5. 6. def fit(self, X, y): 7. self.weight = np.zeros(1 + X.shape[1]) 8. 9. self.errors = [] # Number of misclassifications 10. 11. for i in range(self.niter): 12. err = 0 13. for xi, target in zip(X, y): 14. delta_w= self.rate * (target-self.predict(xi)) 15. self.weight[1:] += delta_w * xi 16. self.weight[0] += delta_w 17. err += int(delta_w != 0.0) 18. self.errors.append(err) 19. return self 20. 21. def net_input(self, X): 22. return np.dot(X, self.weight[1:]) + self.weight[0] 23. 24. def predict(self, X): 25. return np.where(self.net_input(X) >= 0.0, 1, -1)