完整AdaBoost算法

来源:互联网 发布:mac中如何新建文件夹 编辑:程序博客网 时间:2024/06/05 02:37
#coding=utf-8from numpy import *#coding=utf-8import refrom numpy import *def load_data(file_name):    open_file=open(file_name)    read=open_file.readlines()    data=re.split(pattern='!',string=read[0],maxsplit=0)    a=[]    s=[]    for i in data:        try:            d1=re.split(pattern=', ',string=i,maxsplit=0)            d0=re.split(pattern="\[",string=d1[0],maxsplit=0)            d2=re.split(pattern=']',string=d1[2],maxsplit=0)            l=[float(d0[1]),float(d1[1])]            a.append(l)            s.append(int(d2[0]))        except:            pass    data=a    label=s    return data,label#data,label=load_data('testdata.txt')#import matplotlib.pyplot as plt#看样本的散点图#x1=[];y1=[]#x2=[];y2=[]#m=shape(mat(data))[0]#for i in range(m): #   if int(label[i])==1:  #      x1.append(data[i][0]);y1.append(data[i][1])   # else:    #    x2.append(data[i][0]);y2.append(data[i][1])#fig=plt.figure()#ax=fig.add_subplot(111)#ax.scatter(x1,y1,c='red')#ax.scatter(x2,y2,c='blue')#plt.show()def stump_classify(data_matrix,i,threshold_value,make):    #以阈值来判断类别,每两次判断中阈值是固定的。    #可以理解为在阈值固定的情况下,都尝试一下。    #即大于阈值为-1类或者小于阈值为-1类。    #从而得出判定结果再计算错误率,最终选择错误率最低的作为树状。    best_result=ones((shape(data_matrix)[0],1))    #初始一个最佳分类结果    if make=='lt':        #小于        best_result[data_matrix[:,i]<=threshold_value]=-1.0        #将ret_array中判断为真的位置的值改为-1.    else:        #大于        best_result[data_matrix[:,i]>threshold_value]=-1.0        #同上    return best_resultdef build_stump(data_arr,class_label,d):    #1.循环每个特征向量    #2.用此特征向量计算出j个阈值    #3.比较以各阈值划分数据得到结果的错误率    #4.选个最小错误率的划分方法当树桩    data_matrix=mat(data_arr);label_matrix=mat(class_label).T    #矩阵化    m,n=shape(data_matrix)    num_steps=10.0;best_stump={};best_result=mat(zeros((m,1)))    #步数10;最佳树;最佳分类    min_error=inf    #定义min_error为正无穷;-inf为负无穷    for i in range(n):        #遍历列数,即遍历特征。样本有两个特征所以遍历两次。i取0 or 1.        range_min=data_matrix[:,i].min();range_max=data_matrix[:,i].max()        #取第i列中的最小值与最大值。用来确定路程        step_size=(range_max-range_min)/num_steps        #计算步幅,每步的长度        for j in range(-1,int(num_steps)+1):            #循环12次,预定步数是10次            for make in ['lt','gt']:                #小于 ,大于                threshold_value=(range_min+float(j)*step_size)                #此算法中最主要的步骤                #阈值=最小值+步数(j)*步幅,第一个值为负,逐步提高阈值。                predicted_value=stump_classify(data_matrix,i,threshold_value,make)                #预测值                err_arr=mat(ones((m,1)))                #初始化一个错误列表。默认全为1                err_arr[predicted_value==label_matrix]=0                #如果预测值等于实际值则是其位置为0                weighted_error=d.T*err_arr                #加权错误率,越小分类越正确                print 'split:feature %d,thresh %.2f,thresh ineqal:%s,the weighted error is %.3f'%(i,threshold_value,make,weighted_error)                if weighted_error<min_error:                    #上面的for 循环两次                    #1.怎样都是成立的,并对min_error进行赋值                    #2.第二次循环得出的weighted_error总比第一次小                    min_error=weighted_error                                        best_result=predicted_value.copy()                    best_stump['feature']=i#最佳分类特征                    best_stump['threshold']=threshold_value#最佳阈值                    best_stump['make']=make#最佳判定符号。。即使大于阈值算-1类还是小于阈值算-1类    return best_stump,min_error,best_result    #在预定的步数下    #返回的是最佳树桩,最小的错误率(小数形式),最佳的分类结果###########上半部分就是单层决策树桩############################下半部分是完整的AdaBoost算法实现####################主要区别就是上面有错误率,下面的要求0错误率。###########通过不断调整权重d向量来实现##############def ada_boost_train_ds(data_arr,class_label,num_it=10):        result_list=[]    #结果列表,每次分类尝试都集中在这里    m=shape(data_arr)[0]    d=mat(ones((m,1))/m)    #初始权重d    class_estimate=mat(zeros((m,1)))    #估值    for i in range(num_it):        best_stump,error,result=build_stump(data_arr,class_label,d)        #其实主要部分还是上面的树桩函数。这个for主要是用来调整权重d,然后根据不同的d来分类。        print 'd:',d.T        alpha=float(0.5*log((1.0-error)/max(error,1e-16)))        #alpha=1/2(ln[(1-error)/error])         #1e-16 即0.1的16次方。这里用来保证不出现分母为零的情况        best_stump['alpha']=alpha        #在返回的树桩中加入alpha        result_list.append(best_stump)        print 'result:',result.T        expon=multiply(sign(class_estimate)!=mat(class_label).T,result)        #判断估值和实际结果符号是否相等,如果不想等就把相应位置为result.相等的部分替换为0.        #sign 符号函数,用来判断正负        #这步应该是不论怎样返回的都是result        d=multiply(d,exp(expon))        #内积。exp(x) 即 e**x,e为2.71828....        #第一次循环d1=1/400*(+_)2.71828...        #第二次d2=d1*(+_)2.71828...        #d是一列,(+_)2.71828...也是一列        d=d/d.sum()        #加权率        class_estimate+=alpha*result        #alpha定义为每个分类器的权重        print 'classestimate: ',class_estimate.T        agg_error=multiply(sign(class_estimate)!=mat(class_label).T,ones((m,1)))        #判断估计值是否与实际值相等,不等就把相应位置为1.相等就替换为0.        error_rate=agg_error.sum()/m        print 'error_rate:',error_rate,'\n'        if error_rate==0.0:break    return result_listdef test():    data,label=load_data('testdata.txt')    d=mat(ones((400,1))/400)    #这个d值是用来计算权重。建议形式为d=mat(ones((m,1))/m),m是数据的行数    #这样得到的结果基本都是小于1 的。    data_matrix=mat(data)    weak_class_arr=ada_boost_train_ds(data_matrix,label,40)   # best_stump,min_error,best_result=build_stump(data,label,d)    print weak_class_arr,len(weak_class_arr)    #best_stump,min_error,best_resulttest()
样本数据如下,为不可分数据。所以到最后还是有错误值。主要是了解一下过程


c[2.4411327231088444, 8.358493780175225, 1]![6.052323244599178, 2.692240124380242, 1]![2.4114982557913422, 0.5810921425446891, 1]![1.2720779092479262, 9.771971047111453, 1]![9.127202784730354, 8.345129466835488, 1]![2.9543498901891763, 4.5039045237581155, 1]![3.1877871555561175, 2.0074464702707595, 1]![1.3663054838454936, 5.569954031533153, 1]![9.314963271999813, 8.891301430743777, 1]![6.913108605168162, 9.502389510083516, 1]![6.24846122894977, 5.9159445486457685, 1]![3.4281996650663595, 9.797557755640106, 1]![2.1097919987810867, 8.466818199428419, 1]![1.3462305672919117, 5.02603385856786, 1]![1.648043040199344, 7.830745844390227, 1]![1.1706064363543744, 4.792228340913026, 1]![0.9030665541300131, 4.566572381052845, 1]![5.405806332370309, 0.7001105239420569, 1]![0.39305033753526786, 2.1445004973863435, 1]![0.5327526929453175, 5.684837369437448, 1]![7.304258966283129, 6.445518012191184, 1]![7.8831856379326535, 1.2704382127732772, 1]![1.0361488172908684, 3.2972339425439467, 1]![2.24549625567486, 8.606485693859893, 1]![1.7805423251096908, 3.031158858629266, 1]![6.791916679850846, 9.095039287992286, 1]![4.867621825087878, 7.090440456959985, 1]![3.9334763716717225, 0.8740495395210712, 1]![9.683543424077305, 1.9411628412157744, 1]![4.480873583360644, 5.223329233438193, 1]![8.888342780382594, 0.7166776935965358, 1]![6.3449886878500585, 7.2408346737838105, 1]![5.031054570330532, 3.86606408252041, 1]![4.62296733177088, 0.6179746355075177, 1]![1.0574804690372586, 5.767978417690232, 1]![2.459329416428877, 5.423781339637354, 1]![4.99123424281065, 0.07236767410660039, 1]![9.519441688510138, 4.251068832116589, 1]![6.619622688372391, 7.654474551889592, 1]![5.849717362532804, 3.3375871132666965, 1]![4.7214139134381, 2.997077886876993, 1]![7.776473770342234, 4.84149069038378, 1]![4.213472699277277, 5.671265406366203, 1]![8.435383763408524, 5.296127107058156, 1]![1.4476624322378318, 6.148313723984687, 1]![5.224065726951594, 6.2009135389837455, 1]![4.993306635591423, 3.812165615536326, 1]![7.444709199000633, 4.892483139682312, 1]![8.347357345892483, 4.993151607465603, 1]![9.453874445858188, 8.186340221739904, 1]![6.120680820792458, 2.954576963433635, 1]![6.860363859330885, 7.19479882316981, 1]![3.7835660618589753, 9.17935020825851, 1]![1.5728871051816729, 1.5861240030070434, 1]![2.4220736728757455, 3.7811840669358565, 1]![9.384098301871768, 2.07506827198506, 1]![4.048301184793964, 4.5282446101665155, 1]![1.5095793733183593, 2.3377019656267684, 1]![4.780946261313313, 2.866699136600428, 1]![5.984301139301992, 5.377650869834005, 1]![9.364999307514367, 2.080720030005687, 1]![7.256949507373301, 4.166793228476994, 1]![4.887600305494878, 2.211982773738961, 1]![5.041263258013657, 7.1923404846599714, 1]![5.773652183803151, 0.4669030587703349, 1]![0.025636305113398983, 8.76309361136753, 1]![2.47986196558295, 4.288411159857652, 1]![9.717728558302303, 9.53931874715063, 1]![3.7237846596183366, 8.377955029278777, 1]![6.846429258254878, 6.339732280805363, 1]![6.602678316842255, 7.8277759543716785, 1]![7.046749349966257, 9.698469214069622, 1]![6.451890780765298, 8.15366985130762, 1]![8.47004814912912, 2.2849352941087187, 1]![7.188153785187579, 6.854034308549144, 1]![3.749040900794717, 5.719805691614996, 1]![2.409463348408374, 1.5046554400901524, 1]![3.0411358260641874, 9.318284637014365, 1]![9.19273320746957, 9.977730204040249, 1]![4.212813058001731, 1.5754694604130326, 1]![6.7292585541374015, 5.983188627282257, 1]![5.847467972289947, 8.253426347946437, 1]![1.162093188494041, 3.848204509567832, 1]![2.722472631212826, 0.2158547908203967, 1]![7.480324259188503, 2.3970950035640346, 1]![1.087105262017769, 3.5537994259007464, 1]![1.0695827918434309, 4.954969106940952, 1]![8.196980634098708, 8.356028668747264, 1]![3.3752857025211327, 0.6697306254544722, 1]![4.5934270712704315, 2.495741317057533, 1]![3.5904081904247787, 0.7248160807992976, 1]![5.082671577573681, 0.4111430202700461, 1]![4.917008063528783, 3.8871771623163753, 1]![8.809474709414348, 2.0864359199567586, 1]![5.175545546350558, 8.551626786251408, 1]![7.7406252284934745, 1.546926108974176, 1]![2.9025552244605346, 5.511687494329328, 1]![3.3871184208004843, 9.18686794182467, 1]![1.4237185233703087, 1.6787825135815648, 1]![9.316899279960227, 1.2268563660994058, 1]![0.3117857470850349, 4.115770665053773, 1]![3.4738745518306557, 6.563612311626459, 1]![3.5698818966746693, 1.2246273996522217, 1]![0.9254909398451749, 9.365958659862999, 1]![8.239254458998623, 9.057538336063036, 1]![3.3080761119394264, 5.512934560811473, 1]![4.908431153349925, 9.641960171676025, 1]![9.081879747644768, 5.550617170348282, 1]![6.737359157934158, 4.014909484405846, 1]![4.624457868196471, 6.226899870082827, 1]![2.49627151737751, 7.36523854811843, 1]![2.629219394467256, 0.03679036363003929, 1]![5.209204978248114, 2.077846299391198, 1]![5.2705412307791555, 6.742130719855176, 1]![7.031666149472419, 3.5189157677180063, 1]![6.499236288285921, 2.7855970310231593, 1]![5.473887171893224, 5.349393578455183, 1]![6.965896398097813, 6.5750290122488515, 1]![9.403095111596375, 9.80328393217572, 1]![6.1952307143789564, 7.618560136793469, 1]![3.65054035296418, 2.98627513328124, 1]![5.3462580233948565, 7.033072341304467, 1]![9.056888793228788, 7.753647690739189, 1]![8.96725528286269, 2.0224558091684406, 1]![0.48439692878378016, 2.3409229636394002, 1]![0.7685383338511775, 3.460486147644264, 1]![2.6791877111889786, 4.05095246219107, 1]![2.5980131529350436, 2.707543983960244, 1]![5.775100267404632, 1.0995805208456577, 1]![6.932965443393054, 2.500712421467932, 1]![3.5303844740729295, 9.809348525016418, 1]![7.66022796143647, 7.991111752154892, 1]![7.799738762846443, 5.451563892071651, 1]![5.35220342325, 1.8052857751836826, 1]![6.144971072317052, 7.293716915304326, 1]![0.7922503744101084, 4.957536549481677, 1]![1.5577800674034614, 2.1725699779175036, 1]![2.2516464977798165, 8.164752817663825, 1]![3.3368270794890975, 0.8923951764707305, 1]![4.528049835349426, 5.2512536982876545, 1]![9.29716936428681, 0.9565796990025766, 1]![6.141582872535137, 3.3139468976535733, 1]![4.315416514084975, 6.028625973800352, 1]![5.6777014409534, 5.178588935459485, 1]![7.596571225274197, 3.343378062026737, 1]![4.807033271752602, 2.128035634339487, 1]![0.023905448595280543, 0.5034066538014648, 1]![5.160114871005894, 8.587655531921355, 1]![8.825999128502684, 7.23460168211899, 1]![8.41409710930921, 2.076272222358748, 1]![5.653659483551974, 9.370931940583796, 1]![3.217441236381071, 0.1738623895903424, 1]![0.6621854828058849, 5.666379615779576, 1]![9.724576134556969, 3.098007903658674, 1]![4.209378709351696, 8.52297799176095, 1]![6.650614530114517, 9.744423069888384, 1]![0.9703333875832754, 2.688829576825772, 1]![2.617262249940371, 4.796401384196493, 1]![9.2419066384069, 0.43605693215108654, 1]![5.752234431342275, 2.8676192976658657, 1]![9.458560410082532, 0.9769720813606209, 1]![8.62599268601422, 9.104737733978348, 1]![5.4883965919597175, 3.1335068028194257, 1]![7.862423912049135, 8.73991749492977, 1]![9.027303744730355, 3.8864390985933426, 1]![5.427290308998232, 5.124711620886059, 1]![4.1669354979226725, 7.157458613013016, 1]![6.639314512451151, 4.905150111279135, 1]![1.5420231228568004, 0.4679324578315258, 1]![4.573952260832812, 2.234106952583983, 1]![8.881533351552058, 9.158672037141702, 1]![0.7634285654972439, 7.410195864307751, 1]![1.6608803136446193, 3.112708004607586, 1]![7.5570561190135965, 2.413872677143397, 1]![6.5767066948813415, 0.4270584634174135, 1]![8.303850706925154, 0.929623106287647, 1]![3.6482136678251322, 6.009620463075476, 1]![9.29541270866855, 2.954912779490819, 1]![7.070208161590029, 6.502299036162965, 1]![4.586182446431154, 6.591222997347764, 1]![8.600190649212562, 8.85749429374939, 1]![0.8441826805056996, 3.30488915436707, 1]![6.63586868973712, 6.237441913865331, 1]![1.2153240299184276, 9.144666670979746, 1]![2.425756545070512, 3.2726143560495577, 1]![1.2705866407663235, 7.369717206678933, 1]![1.091826638665091, 1.2175427124647342, 1]![6.5776663172978385, 4.496079457495661, 1]![3.112666526398502, 7.709585230880645, 1]![4.266357137203556, 8.392778246649854, 1]![4.102260447153979, 0.0325096604565378, 1]![2.9553787788380825, 5.5364878167082265, 1]![6.674578910066807, 5.285497247053516, 1]![1.0842917773272598, 7.715741613781079, 1]![6.931937023911111, 0.0861209636654392, 1]![3.671398792167543, 6.826095231329154, 1]![0.8714588563032699, 9.483720108873676, 1]![0.7242943099164378, 1.8089788206213986, 1]![7.191310087525979, 3.419009565932978, 1]![4.554695786921341, 8.13147603438469, 1]![15.222815902814062, 14.692714679774973, -1]![15.762531191360807, 11.217156661963445, -1]![10.258193873462204, 11.148835662260842, -1]![13.65858889595207, 12.315362770237035, -1]![13.172772359255184, 19.07135544590214, -1]![16.65612075091197, 16.05114777578921, -1]![15.13489924258554, 17.582355595862317, -1]![15.639161167449807, 16.03446878397806, -1]![12.3084941016877, 15.022423100588785, -1]![12.233654914463724, 18.180312127885493, -1]![18.50717814497785, 12.069653112089673, -1]![18.183776477404784, 12.574630775072404, -1]![12.781355463377531, 17.714600268170294, -1]![15.636714186217443, 10.575041661201906, -1]![19.95912837538942, 16.211753317658314, -1]![16.38219319620631, 18.921403382435127, -1]![11.591179201978235, 14.83862454650166, -1]![10.127914210648594, 13.733957258655762, -1]![13.489918244603714, 12.10526584647955, -1]![10.373378737987352, 13.977904147094389, -1]![19.36014761318964, 17.46089460704127, -1]![17.644010089339435, 16.48889793149614, -1]![16.169209011172292, 19.158070130966788, -1]![16.75656749999313, 16.002888352087837, -1]![14.453376723509129, 14.670721647209852, -1]![17.16464309642125, 12.167002220034329, -1]![18.87263863489772, 10.690828713900451, -1]![10.598582643404837, 15.859078358759184, -1]![14.281233718819147, 17.34534290686933, -1]![14.72912376828343, 15.28880885991407, -1]![12.858426805661308, 15.744143761068727, -1]![15.550307587495823, 17.24628722085415, -1]![10.725514922732316, 16.645469334488602, -1]![13.274766267973554, 18.17607813586796, -1]![16.26249089935358, 16.468261192045148, -1]![19.591372096169053, 13.759791815648722, -1]![10.436224203312602, 14.559757040856185, -1]![17.53776076718728, 14.766040272829738, -1]![13.633738609619597, 13.963303409566315, -1]![10.71867719191649, 11.997126384292443, -1]![19.41196640642275, 12.220688303921284, -1]![16.888501852758562, 11.08595096569983, -1]![11.06676495232815, 19.62380018316681, -1]![19.324945193272594, 11.558639742541386, -1]![10.793577938136895, 18.320156483275394, -1]![16.700187462498203, 18.110006366890076, -1]![19.98393224890424, 17.456387978578604, -1]![19.149892998773634, 16.34975184735015, -1]![15.80911519021489, 14.9092225319197, -1]![10.857733282218197, 13.480061995234466, -1]![15.956905791412016, 19.66418163421186, -1]![11.655090964458529, 12.229712607619003, -1]![17.982917394224636, 18.374383742740186, -1]![19.315412849780486, 15.399531571226229, -1]![11.14024803353469, 11.50586138442151, -1]![14.08889295142242, 18.463602922825245, -1]![17.606778846264096, 13.612412388830503, -1]![18.132239335374898, 13.210925054383985, -1]![17.804475516963713, 17.576242060940924, -1]![12.034676233117239, 10.697668936136518, -1]![15.773493164860271, 15.349474467564352, -1]![15.9793441279271, 15.43547177547703, -1]![13.418887319193663, 12.072037110890431, -1]![15.955528129814631, 16.760925112159402, -1]![11.207138597931035, 11.828645852962019, -1]![16.63644847559444, 18.661642139263506, -1]![13.775347027151431, 17.290591031406795, -1]![19.25120176032069, 19.428075463669906, -1]![18.093098527099773, 15.10461782783775, -1]![19.271061010430927, 15.86410959509726, -1]![19.308252341394045, 17.337805424887556, -1]![10.594551736867142, 14.961780502463812, -1]![18.477414607302716, 16.694712054801542, -1]![19.760463123429126, 18.90295438917977, -1]![15.996779771719552, 18.473774781812615, -1]![12.268229069170133, 13.409630665108416, -1]![11.250091282804195, 15.367998979008046, -1]![10.417686031309687, 16.89390649104832, -1]![13.59306082139262, 13.009550991620753, -1]![12.11422129791558, 14.357415456875415, -1]![19.75487009032073, 14.71533041493619, -1]![11.786386549354946, 11.878717747731578, -1]![10.000768684633478, 17.280527082828783, -1]![19.167862264745825, 18.738132586340903, -1]![13.050454982602515, 14.298530632727232, -1]![11.724167302805512, 13.981815998828672, -1]![15.654185875188706, 17.481317370127115, -1]![14.442776682949653, 17.981746162661487, -1]![10.474553608198502, 16.04915561528523, -1]![17.348239230708096, 12.469630523549746, -1]![11.146099574456832, 12.617549275757877, -1]![18.75991523714923, 17.95425566686658, -1]![17.50936768922216, 13.906503486677515, -1]![16.077553228858132, 11.627899427015858, -1]![14.35943105372309, 10.795457141964373, -1]![10.030236817443203, 16.475124583766828, -1]![15.725441696150572, 11.849919335332581, -1]![16.73149591206973, 13.845593236302836, -1]![9, 9, -1]![14.095192650464458, 18.311026910931723, -1]![16.36488498365211, 19.140769584712555, -1]![16.515464927047187, 11.490379612110717, -1]![19.99736622259496, 12.595238554641242, -1]![15.401355211556982, 13.098006870569854, -1]![11.801414021921744, 19.397565341239797, -1]![14.114781482518527, 13.40604865391722, -1]![15.245404335492996, 15.73192393696787, -1]![12.04607898620677, 18.76895937303653, -1]![10.674795459204162, 13.07562033632271, -1]![10.972699224882245, 16.01813067724315, -1]![11.491641176778938, 15.344469833009526, -1]![18.61800718388413, 10.561765308380282, -1]![18.070370509145462, 16.47800039138736, -1]![17.98820910278849, 14.552153958070672, -1]![15.932541936192763, 10.592584227997644, -1]![10.801949972500223, 18.46542119529526, -1]![11.182434187336302, 18.198155474374392, -1]![13.35091917113617, 10.977521607060986, -1]![14.830051266619687, 13.093980820608806, -1]![14.098534286117918, 18.05159863065818, -1]![11.427358222848934, 18.14059185058366, -1]![13.27631896549046, 17.066721048942203, -1]![18.545647660329188, 19.966432018952915, -1]![13.988992625929528, 17.435954010811262, -1]![12.369650917892805, 15.653956171293625, -1]![18.505030189908968, 10.097896164902465, -1]![11.556241401989816, 16.848595544954854, -1]![13.767550109889072, 10.17792553563392, -1]![16.195565392315707, 17.28283446159972, -1]![14.213288461902618, 11.09711335491937, -1]![16.27338685621153, 19.513837403637346, -1]![15.619651042439967, 11.817294689746202, -1]![11.316115090765958, 12.932002066687684, -1]![12.92956609435679, 15.781796545410776, -1]![10.614505402440233, 13.57656959809866, -1]![12.20798775352365, 15.191420388050606, -1]![11.576303269552474, 11.730351059699665, -1]![18.54793585254239, 15.658046473684834, -1]![11.479587901489692, 16.778825441455993, -1]![10.208952378007606, 15.306077814419321, -1]![10.332492619452525, 15.263597634839476, -1]![19.71804513820641, 11.888173693867376, -1]![19.259319196929063, 17.866682270025454, -1]![16.287356664314746, 19.467575559532968, -1]![15.973991104540602, 17.306044490653548, -1]![10.144363145789205, 15.102244699242169, -1]![14.330081834881009, 17.454337975509816, -1]![15.574935106846462, 12.48329571445184, -1]![17.18600282002385, 10.84367319483716, -1]![11.445167497496216, 15.359177397015882, -1]![13.8853158069911, 13.403118012374327, -1]![17.18675055009912, 15.974686534567006, -1]![13.909193692940367, 13.379978706725584, -1]![16.55088973643789, 16.169552288385105, -1]![19.73051906779388, 18.725874208824184, -1]![19.282665813396807, 14.566370314885637, -1]![14.408573954487041, 18.10396356231763, -1]![13.60182007367956, 15.881073120317357, -1]![11.600006494933712, 19.315025291709574, -1]![10.701195724630043, 14.364564120763635, -1]![13.471222886498946, 10.048558785875688, -1]![12.997199709348951, 10.396190024061022, -1]![11.816635458177027, 11.41787748540072, -1]![10.906502931266985, 19.032216623572165, -1]![13.324464803055509, 16.447778940432478, -1]![19.889508627197106, 19.53514633754493, -1]![15.5091937101516, 10.170651064708206, -1]![11.133067271380941, 19.85456504890131, -1]![14.234215844181204, 14.575456648041172, -1]![15.613445682225315, 13.118587344450617, -1]![17.836599073212028, 14.354508818453441, -1]![15.207866861999088, 14.406754833786684, -1]![18.627835481636367, 15.556412677128968, -1]![17.416916454374622, 17.886531816348917, -1]![16.11959394209279, 15.23988821613429, -1]![17.539717645228727, 10.646075243075186, -1]![10.01498868985738, 14.83262107612466, -1]![19.98234644996191, 12.51515927217245, -1]![10.493775055272534, 17.724837698125587, -1]![13.432082208183783, 18.455119631983546, -1]![13.008350351915409, 12.624929362204753, -1]![19.934438959130095, 10.18669213180688, -1]![13.146625359399675, 18.07670159276686, -1]![12.676394961644652, 11.220546258884061, -1]![10.375949247983566, 13.29199976087968, -1]![17.8154026934885, 16.053356031604128, -1]![16.600541516028507, 11.824285509610382, -1]![11.190952597947177, 17.894670281470532, -1]![12.563689893012647, 10.704630072801159, -1]![12.0636029265442, 18.26566868431079, -1]![15.871145981911083, 17.853124800204114, -1]![15.618134777062345, 15.092414343713193, -1]![16.335878228551664, 15.824450799248961, -1]![10.931392845066837, 17.677032809003745, -1]![14.201176050251306, 11.176135989671403, -1]![18.585640584905445, 17.692939162001416, -1]![12.337868388562011, 18.64036933559634, -1]![15.06514358919125, 14.909800785535023, -1]![19.59492538520987, 13.623682261586739, -1]![11.25644335259678, 14.292707270666476, -1]!
0 0
原创粉丝点击