房产网站代理,wordpress 修改主题,安徽做网站哪家好,网站的架设感知机是一种较为简单的二分类模型#xff0c;感知机旨在学习能够将输入数据划分为1/-1的线性分离超平面#xff0c;所以说整体而言感知机是一种线性模型。 查看数据集
import pandas as pd
import numpy as np
from sklearn.datasets import load_iris
import matplotlib.…感知机是一种较为简单的二分类模型感知机旨在学习能够将输入数据划分为1/-1的线性分离超平面所以说整体而言感知机是一种线性模型。 查看数据集
import pandas as pd
import numpy as np
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
# load data
iris load_iris()
df pd.DataFrame(iris.data, columnsiris.feature_names)
df[label] iris.targetdf.columns [sepal length, sepal width, petal length, petal width, label]
print(df.label.value_counts())plt.scatter(df[:50][sepal length], df[:50][sepal width], labelone)
plt.scatter(df[50:100][sepal length], df[50:100][sepal width], labeltwo)
plt.xlabel(sepal length)
plt.ylabel(sepal width)
plt.legend()
plt.show() sepal length (cm) sepal width (cm) petal length (cm) petal width (cm)
发现四个维度的数据,有两个维度就可以线性可分. import pandas as pd
import numpy as np
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
# load data
iris load_iris()
df pd.DataFrame(iris.data, columnsiris.feature_names)
df[label] iris.target# df.columns [sepal length, sepal width, petal length, petal width, label]
# print(df.label.value_counts())
#
# plt.scatter(df[:50][sepal length], df[:50][sepal width], labelone)
# plt.scatter(df[50:100][sepal length], df[50:100][sepal width], labeltwo)
# plt.xlabel(sepal length)
# plt.ylabel(sepal width)
# plt.legend()
# plt.show()data np.array(df.iloc[:100, [0,1,-1]])
print(data)
X, y data[:,:-1], data[:,-1]
print(type(X))
y np.array([1 if i 1 else -1 for i in y])# 数据线性可分二分类数据
# 此处为一元一次线性方程
class Model:def __init__(self):self.w np.ones(len(data[0]) - 1, dtypenp.float32)print(self.w,self.w)self.b 0self.l_rate 0.1# self.data datadef sign(self, x, w, b):y np.dot(x, w) breturn y# 随机梯度下降法def fit(self, X_train, y_train):is_wrong Falsewhile not is_wrong:wrong_count 0for d in range(len(X_train)):X X_train[d]y y_train[d]if y * self.sign(X, self.w, self.b) 0:self.w self.w self.l_rate * np.dot(y, X)self.b self.b self.l_rate * ywrong_count 1if wrong_count 0:is_wrong Truereturn Perceptron Model!def score(self):passperceptron Model()
perceptron.fit(X, y)x_points np.linspace(4, 7,10)
print(x_points,x_points)
y_ -(perceptron.w[0]*x_points perceptron.b)/perceptron.w[1]
plt.plot(x_points, y_)plt.plot(data[:50, 0], data[:50, 1], bo, colorblue, labelone)
plt.plot(data[50:100, 0], data[50:100, 1], bo, colororange, labeltwo)
plt.xlabel(sepal length)
plt.ylabel(sepal width)
plt.legend()
plt.show()