打開Python,使用import導(dǎo)入numpy和matplotlib.pyplot模塊。輸入函數(shù)數(shù)據(jù),然后使用plt.show()展示繪制的圖像即可。
站在用戶的角度思考問題,與客戶深入溝通,找到廣元網(wǎng)站設(shè)計與廣元網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站設(shè)計、網(wǎng)站制作、外貿(mào)營銷網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊、網(wǎng)站空間、企業(yè)郵箱。業(yè)務(wù)覆蓋廣元地區(qū)。
使用sklearn的一系列方法后可以很方便的繪制處ROC曲線,這里簡單實現(xiàn)以下。
主要是利用混淆矩陣中的知識作為繪制的數(shù)據(jù)(如果不是很懂可以先看看這里的基礎(chǔ)):
tpr(Ture Positive Rate):真陽率 圖像的縱坐標(biāo)
fpr(False Positive Rate):陽率(偽陽率) 圖像的橫坐標(biāo)
mean_tpr:累計真陽率求平均值
mean_fpr:累計陽率求平均值
import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm, datasets
from sklearn.metrics import roc_curve, auc
from sklearn.model_selection import StratifiedKFold
iris = datasets.load_iris()
X = iris.data
y = iris.target
X, y = X[y != 2], y[y != 2] # 去掉了label為2,label只能二分,才可以。
n_samples, n_features = X.shape
# 增加噪聲特征
random_state = np.random.RandomState(0)
X = np.c_[X, random_state.randn(n_samples, 200 * n_features)]
cv = StratifiedKFold(n_splits=6) #導(dǎo)入該模型,后面將數(shù)據(jù)劃分6份
classifier = svm.SVC(kernel='linear', probability=True,random_state=random_state) # SVC模型 可以換作AdaBoost模型試試
# 畫平均ROC曲線的兩個參數(shù)
mean_tpr = 0.0 # 用來記錄畫平均ROC曲線的信息
mean_fpr = np.linspace(0, 1, 100)
cnt = 0
for i, (train, test) in enumerate(cv.split(X,y)): #利用模型劃分?jǐn)?shù)據(jù)集和目標(biāo)變量 為一一對應(yīng)的下標(biāo)
cnt +=1
probas_ = classifier.fit(X[train], y[train]).predict_proba(X[test]) # 訓(xùn)練模型后預(yù)測每條樣本得到兩種結(jié)果的概率
fpr, tpr, thresholds = roc_curve(y[test], probas_[:, 1]) # 該函數(shù)得到偽正例、真正例、閾值,這里只使用前兩個
mean_tpr += np.interp(mean_fpr, fpr, tpr) # 插值函數(shù) interp(x坐標(biāo),每次x增加距離,y坐標(biāo)) 累計每次循環(huán)的總值后面求平均值
mean_tpr[0] = 0.0 # 將第一個真正例=0 以0為起點
roc_auc = auc(fpr, tpr) # 求auc面積
plt.plot(fpr, tpr, lw=1, label='ROC fold {0:.2f} (area = {1:.2f})'.format(i, roc_auc)) # 畫出當(dāng)前分割數(shù)據(jù)的ROC曲線
plt.plot([0, 1], [0, 1], '--', color=(0.6, 0.6, 0.6), label='Luck') # 畫對角線
mean_tpr /= cnt # 求數(shù)組的平均值
mean_tpr[-1] = 1.0 # 坐標(biāo)最后一個點為(1,1) 以1為終點
mean_auc = auc(mean_fpr, mean_tpr)
plt.plot(mean_fpr, mean_tpr, 'k--',label='Mean ROC (area = {0:.2f})'.format(mean_auc), lw=2)
plt.xlim([-0.05, 1.05]) # 設(shè)置x、y軸的上下限,設(shè)置寬一點,以免和邊緣重合,可以更好的觀察圖像的整體
plt.ylim([-0.05, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate') # 可以使用中文,但需要導(dǎo)入一些庫即字體
plt.title('Receiver operating characteristic example')
plt.legend(loc="lower right")
plt.show()
本文實例講述了Python基于最小二乘法實現(xiàn)曲線擬合。分享給大家供大家參考,具體如下:
這里不手動實現(xiàn)最小二乘,調(diào)用scipy庫中實現(xiàn)好的相關(guān)優(yōu)化函數(shù)。
考慮如下的含有4個參數(shù)的函數(shù)式:
構(gòu)造數(shù)據(jù)
?
123456789101112131415
import numpy as npfrom scipy import optimizeimport matplotlib.pyplot as pltdef logistic4(x, A, B, C, D):??return (A-D)/(1+(x/C)**B)+Ddef residuals(p, y, x):??A, B, C, D = p??return y - logisctic4(x, A, B, C, D)def peval(x, p):??A, B, C, D = p??return logistic4(x, A, B, C, D)A, B, C, D = .5, 2.5, 8, 7.3x = np.linspace(0, 20, 20)y_true = logistic4(x, A, B, C, D)y_meas = y_true + 0.2 * np.random.randn(len(y_true))
調(diào)用工具箱函數(shù),進(jìn)行優(yōu)化
?
1234
p0 = [1/2]*4plesq = optimize.leastsq(residuals, p0, args=(y_meas, x))????????????# leastsq函數(shù)的功能其實是根據(jù)誤差(y_meas-y_true)????????????# 估計模型(也即函數(shù))的參數(shù)
繪圖
?
12345678
plt.figure(figsize=(6, 4.5))plt.plot(x, peval(x, plesq[0]), x, y_meas, 'o', x, y_true)plt.legend(['Fit', 'Noisy', 'True'], loc='upper left')plt.title('least square for the noisy data (measurements)')for i, (param, true, est) in enumerate(zip('ABCD', [A, B, C, D], plesq[0])):??plt.text(11, 2-i*.5, '{} = {:.2f}, est({:.2f}) = {:.2f}'.format(param, true, param, est))plt.savefig('./logisitic.png')plt.show()
希望本文所述對大家Python程序設(shè)計有所幫助。
輸入以下代碼導(dǎo)入我們用到的函數(shù)庫。
import numpy as np
import matplotlib.pyplot as plt
x=np.arange(0,5,0.1);
y=np.sin(x);
plt.plot(x,y)
采用剛才代碼后有可能無法顯示下圖,然后在輸入以下代碼就可以了:
plt.show()
當(dāng)前文章:python構(gòu)造曲線函數(shù),python依據(jù)數(shù)據(jù)生成函數(shù)曲線
本文鏈接:http://aaarwkj.com/article40/dsigcho.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設(shè)計公司、響應(yīng)式網(wǎng)站、動態(tài)網(wǎng)站、企業(yè)網(wǎng)站制作、App設(shè)計、搜索引擎優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)