Python學習之第五次作業

2021-09-29 21:09:13 字數 3619 閱讀 4078

**注釋

感知機工作原理

linux安裝

在實現直方圖的繪製之前,學習了普通線圖、折線圖、子圖、餅圖以及散點圖的繪製。

import numpy as np

import matplotlib.pyplot as plt

x = np.linspace(-5,5,50) # numpy陣列生成(-5,5)的50個數字

y1 = 4*x + 1 # 定義y1方程

y2 = x**2 -5 # 定義y2方程

plt.plot(x,y1) # y1

plt.plot(x,y2) # y2

plt.show()

plt.plot(x1,y1,label='slight line') 

#從左到右的引數依次是橫座標、縱座標、標籤、線寬、線的顏色、需不需要標出點(預設不標),點的顏色,點的大小

plt.plot(x2,y2,label='point line',linewidth=3,color='r',marker='^',marke***cecolor='yellow',markersize=10)

t = np.linspace(-5, 5, 50)   #numpy陣列生成50個數字

s1 = np.sin(np.pi*t)

s2 = np.sin(np.pi*t)

plt.figure(1)

plt.subplot(211) #設定子圖

plt.plot(t, s1)

plt.subplot(212)

plt.plot(t, 2*s1)

plt.show()

labels = 'type 1', 'type 2', 'type 3', 'type 4'

sizes = [10,20, 30, 40]

explode = (0, 0.1, 0, 0) # 分離 explode=explode,

fig1, ax1 = plt.subplots()

ax1.pie(sizes,labels=labels,autopct='%1.0f%%',startangle=90)

ax1.axis('equal') # 相等的長寬比可以將餅圖置位圓形

plt.show()

# 散點圖

x = np.random.random(30)

y = np.random.random(30)

colors = np.random.random(30) # 隨機生成顏色

area = (50*np.random.random(30)) # s=area

plt.scatter(x, y) # 引數實現 c=colors

plt.show()

**如下:

import matplotlib.pyplot as plt

from matplotlib.font_manager import fontproperties

list1 = [2,4,5,7]

list2 = [5,12,8,6]

width = 0.8

n =2

width = width/2#長條形的寬度

plt.bar([0.5,1.5,2.5,3.5],[5,12,8,6],width = width,label = 'group 1')

plt.bar([0.9,1.9,2.9,3.9],[2,4,5,7],width = width,label = 'group 2')

rects = plt.bar([0.5,1.5,2.5,3.5],[5,12,8,6], width=0.4)

#rects = plt.bar([0.5,1.5,2.5,3.5],[2,4,5,7], width=0.4 , label="1")

for rect in rects:#在柱形圖上顯示資料

height = rect.get_height()

plt.text(rect.get_x()+rect.get_width()/2,height,str(height),ha = 'center',va = 'bottom')

plt.xlabel('the x')#x軸名稱

plt.ylabel('the y')#y軸名稱

plt.title('the title')#直方圖名稱

plt.legend()#給圖加上圖例

plt.show()

在直方圖上新增資料標籤:(標籤的橫座標,標籤的縱座標,標籤顯示,垂直對齊方式,水平對齊方式)

畫出的直方圖:

p_x = np.array([[3, 3], [4, 3], [1, 1], [2.5, 3]])#輸入四個點(3,3),(4,3),(1,1),(2.5,3)

y = np.array([1, 1, -1, -1])

for i in range(len(p_x)):#繪製初始點

if y[i] == 1:

plt.plot(p_x[i][0], p_x[i][1], 'ro')#紅色圓點

else:

plt.plot(p_x[i][0], p_x[i][1], 'bo')#藍色圓點

w = np.array([1, 0])#權值

b = 0#偏導

delta = 1#學習率

for i in range(100):

temp = -1

for i in range(len(p_x)):

if y[j] !* np.sign(npsot(w, p_x[0]) + b):

temp = j

break

if temp == -1:#三個點都被正確分類

break

w += delta * y[temp] * p_x[temp]

b += delta * y[temp]

line_x = [0, 10]#x軸的範圍為0~10

line_y= [0, 0]

for i in range(len(line_x)):#超平面表示式為wx+b=0,其中w為向量w1x1+w2x2+b=0,x2=(-w1x1-b)/w2

line_y[i] = (-w[0] * line_x[i] - b) / w[1]

plt.plot(line_x, line_y)

plt.grid(true)# 顯示背景的網格線

plt.show()

感知機是二分類的線性分類模型,屬於監督學習演算法。感知機匯入了基於誤分類的損失函式,利用梯度下降法對損失函式進行最優化求解。

學習了一下下面的部落格,對感知機工作原理有了更深入的理解,在輸入時,對於不同輸入的不同影響,其權重也不一樣:

對於linux的安裝,我參考了下面的部落格:

Python第五次作業

習題1 讀入檔案pmi days.csv,完成以下操作 1.統計質量等級對應的天數,例如 優 5天 良 3天 中度汙染 2天 2.找出pmi2.5的最大值和最小值,分別指出是哪一天。1 import pandas as pd 2import numpy as np 34 days path open...

第五次作業

一 問題及 include using namespace std class time void add a minute void add an hour void add seconds int n void add minutes int n void add hours int n voi...

第五次作業

當我們在討論多型性的時候,通常會用過載函式進行舉例,而這次發現的問題主要在過載運算子上,因此我希望通過對過載運算子的測試來得出乙個結論。我們想知道為什麼前置運算子和後置運算子會有區別,因此設計了乙個實驗來證明它 得到最終結果如預期那樣。通過這次作業,我能感受到前置和後置運算子的區別,通過x 和y x...