感知器演算法及其python 實現 V2.0
import matplotlib.pyplot as plt
import numpy as np
from random import uniform, seed, shuffle ,sample
import math
import logging
# from random import random
'''JY_Toolkit.py'''
class Jy_makeDataset(object):
def random_state(random_seed):
seed(int(random_seed))
def draw_HalfMoon(n_sample: int = 1000, # 樣本點個數,兩個分類一共 n_sample
w: float = 1, # 半月的線寬
radius: float = 4, # 半月的半徑
hor_distance: float = 4, # Horizontal direction distance for two point
ver_distance: float = 0, # Vertical direction distance for two point
slope: float = 0, # 半月傾斜的角度 [0 ~ 180]
positive_val: int = 1,
negative_val: int = -1,
):
slope %= 180 # make the `slope` between 0 and 180
# 將 n_sample 和樣本分為兩類每個樣本 n_sample / 2 類
each_m = n_sample//2
# circle origin point of positive moon [x , y]
p_origin = [1 + w/2 + radius, 1 + w/2 + radius + ver_distance]
# circle origin point of negative moon [x , y]
n_origin = [p_origin[0] + hor_distance, p_origin[1] - ver_distance]
# product positive point
p_sample = []
n_sample = []
for i in range(each_m):
# Randomly generate l
temp_l = radius + uniform(-(w/2), w/2)
# Randomly generate angle i.e. theta
temp_angle = uniform(slope, slope + 180)
point_x = p_origin[0] + temp_l*math.cos(math.pi/180*temp_angle)
point_y = p_origin[1] + temp_l*math.sin(math.pi/180*temp_angle)
p_sample.append([point_x, point_y, positive_val])
for i in range(each_m):
# Randomly generate l
temp_l = radius + uniform(-(w/2), w/2)
# Randomly generate angle i.e. theta , but the angle of negative point should between `slope + 180` and `slope + 360`
temp_angle = uniform(slope + 180, slope + 360)
point_x = n_origin[0] + temp_l*math.cos(math.pi/180*temp_angle)
point_y = n_origin[1] + temp_l*math.sin(math.pi/180*temp_angle)
n_sample.append([point_x, point_y, negative_val])
sample_points = p_sample + n_sample
shuffle(sample_points)
sample_points = np.array(sample_points)
return sample_points[:, 0:2], sample_points[:, 2]
pass
class Jy_dataSetProcess(object):
def Jy_train_test_split(X,
y,
test_size : 0.2,
):
data = np.column_stack((X,y))
if test_size >= 1 and test_size <= 0:
logging.exception('test_size must be greater than 0 less than 1, we will assign test_size value of 0.2')
test_size = 0.2
sample_count = int(len(data)*test_size)
'''
分離思路:
先將輸入的資料集打亂,外匯跟單gendan5.com然後取前 test_size 部分為測試集,後部分為訓練集
'''
shuffle(data)
X_test = data[0:sample_count-1]
X_train = data[sample_count:]
return X_train[:,0:2], X_test[:,0:2] ,X_train[:,2] , X_test[:,2]
pass
if __name__ == '__main__':
random_seed = 52
Jy_makeDataset.random_state(random_seed)
np_data, label = Jy_makeDataset.draw_HalfMoon(n_sample=2000)
p_point_x1 = [np_data[i][0] for i in range(len(np_data)) if label[i] == 1]
p_point_x2 = [np_data[i][1] for i in range(len(np_data)) if label[i] == 1]
n_point_x1 = [np_data[i][0] for i in range(len(np_data)) if label[i] == -1]
n_point_x2 = [np_data[i][1] for i in range(len(np_data)) if label[i] == -1]
fig = plt.figure(num="HalfMoons", figsize=(8, 8))
ax1 = fig.add_subplot(111)
ax1.scatter(p_point_x1, p_point_x2, c='red')
ax1.scatter(n_point_x1, n_point_x2, c='blue')
plt.show()
print(np_data)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946337/viewspace-2842965/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 蟻群演算法原理及其實現(python)演算法Python
- 線性表及其演算法(java實現)演算法Java
- 經典排序演算法及其 Java 實現排序演算法Java
- 實驗一演算法描述及其程式實現演算法
- 第二章——用Python實現感知器模型(MNIST資料集)Python模型
- 社會網路分析及其Python實現Python
- 熱力圖生成演算法及其具體實現演算法
- 空間索引 - GeoHash演算法及其實現優化索引演算法優化
- 迴圈碼、卷積碼及其python實現卷積Python
- 8 大內部排序演算法相關及其java實現排序演算法Java
- 模擬退火演算法舉例及其matlab實現演算法Matlab
- FM演算法python實現演算法Python
- python實現冒泡演算法Python演算法
- python實現FM演算法Python演算法
- PYTHON實現DFS演算法Python演算法
- python實現Floyd演算法Python演算法
- Python實現KNN演算法PythonKNN演算法
- 紙上談兵: 排序演算法簡介及其C實現排序演算法
- 多種負載均衡演算法及其Java程式碼實現負載演算法Java
- 多種負載均衡演算法及其 Java 程式碼實現負載演算法Java
- python實現希爾排序演算法Python排序演算法
- RSA演算法與Python實現演算法Python
- Machine Learning-感知器學習演算法Mac演算法
- 23種設計模式:現代C++實現 V2.0設計模式C++
- 演算法系列(四)歸併排序及其改進(java實現)演算法排序Java
- 各種排序演算法思想複雜度及其java程式實現排序演算法複雜度Java
- python演算法 - python實現氣泡排序Python演算法排序
- tf.keras實現線性迴歸和多層感知器Keras
- 字首樹及其Java實現Java
- AOP如何實現及其原理
- Set介面及其實現類
- 線性表及其實現
- 分散式鎖及其實現分散式
- 【筆記】堆及其實現筆記
- 一文了解 Elasticsearch 及其與 Python 的對接實現ElasticsearchPython
- 常見排序演算法-Python實現排序演算法Python
- 基本排序演算法的Python實現排序演算法Python
- “猴子選大王” 演算法 python實現演算法Python