示例#1
0
文件: data.py 项目: tigerJayjay/ml
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()
示例#2
0
    使用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()
'''
逻辑斯谛回归会尽量最大化训练数据集的条件似然,这使得它比支持向量机更易于处理离群点,而支持向量机则更关注接近决策边界的点,
逻辑斯蒂谛回归模型简单更容易实现,更新方便,当应用于流数据分析时,这是非常具备吸引力的
'''