from com.liu.t import plot_decision_regions data = pd.read_csv('H:/pythonProject/test/com/liu/iris.data') df = pd.DataFrame(data) y = df.iloc[0:100, 4].values y = np.where(y == 'Iris-setosa', -1, 1) X = df.iloc[0:100, [0, 2]].values plt.scatter(X[:50, 0], X[:50, 1], color='red', marker='o', label='setosa') plt.scatter(X[50:100, 0], X[50:100, 1], color='blue', marker='x', label='versicolor') plt.xlabel('petal length') plt.ylabel('sepal length') plt.legend(loc='upper left') plt.show() ppn = Perceptron(eta=0.1, n_iter=10) ppn.fit(X, y) plt.plot(range(1, len(ppn.errors_) + 1), ppn.errors_, marker='o') plt.xlabel('Epochs') plt.ylabel('Number of misclassifications') plt.show() plot_decision_regions(X, y, classifier=ppn) plt.xlabel('sepal length[cm]') plt.ylabel('petal length[cm]') plt.legend(loc='upper left') plt.show()
使用StandardScaler的fit方法计算每个特征的样本均值和标准差 使用transform方法可以使用样本均值和标准差对训练数据做标准化处理 ''' sc = StandardScaler() sc.fit(X_train) X_train_std = sc.transform(X_train) X_test_std = sc.transform(X_test) #kernel=linear线性 #kernel='rbf'非线性 #gamma的值越小,会导致决策边界更加宽松 svm = SVC(kernel='rbf', C=1.0, random_state=0, gamma=100) svm.fit(X_train_std, y_train) print(X_train_std, X_test_std) print('----') X_combined_std = np.vstack((X_train_std, X_test_std)) print(X_combined_std) y_combined = np.hstack((y_train, y_test)) plot_decision_regions(X_combined_std, y_combined, classifier=svm, test_idx=range(105, 150)) plt.xlabel('petal length [standardized]') plt.ylabel('petal width [standardized]') plt.legend(loc='upper left') plt.show() ''' 逻辑斯谛回归会尽量最大化训练数据集的条件似然,这使得它比支持向量机更易于处理离群点,而支持向量机则更关注接近决策边界的点, 逻辑斯蒂谛回归模型简单更容易实现,更新方便,当应用于流数据分析时,这是非常具备吸引力的 '''