亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? art2a.java

?? 人工智能ART-2a的JAVA實(shí)現(xiàn)
?? JAVA
字號:
/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * The Original Code is EDAM Enchilada's Art2A class. * * The Initial Developer of the Original Code is * The EDAM Project at Carleton College. * Portions created by the Initial Developer are Copyright (C) 2005 * the Initial Developer. All Rights Reserved. * * Contributor(s): * Ben J Anderson andersbe@gmail.com * David R Musicant dmusican@carleton.edu * Anna Ritz ritza@carleton.edu * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** *//* * Created on Aug 19, 2004 * Ben Anderson */package analysis.clustering;import java.util.ArrayList;import java.util.Iterator;import ATOFMS.ParticleInfo;import analysis.*;import database.InfoWarehouse;import database.NonZeroCursor;import analysis.BinnedPeak;import analysis.BinnedPeakList;/** * @author andersbe * */public class Art2A extends Cluster {	private float vigilance;	private float learningRate;	private int size;	protected NonZeroCursor curs;	// stableIterations contains the number of iterations that ART-2a	// terminates after if there has not been an improvement in totalDistance	private final int stableIterations = 10;		/**	 * @param cID	 * @param database	 */	public Art2A(int cID, InfoWarehouse database, float v, float lr, 			int passes,  DistanceMetric dMetric, String comment, ClusterInformation c) {		super(cID, database, "Art2A,V=" + v + ",LR=" + lr +",Passes=" +				passes + ",DMetric=" + dMetric, comment, c.normalize);		parameterString = "Art2A,V=" + v + ",LR=" + lr +",Passes=" +		passes + ",DMetric=" + dMetric + super.folderName;		vigilance = v;		learningRate = lr;		numPasses = passes;		distanceMetric = dMetric;		collectionID = cID;		totalDistancePerPass = new ArrayList<Double>();		size = db.getCollectionSize(collectionID);			super.clusterInfo = c;//set inherited variable	}		private BinnedPeakList adjustByLearningRate(			BinnedPeakList addedParticle,			BinnedPeakList centroid)	{		BinnedPeakList returnList;		if (isNormalized)			returnList = new BinnedPeakList(new Normalizer());		else			returnList = new BinnedPeakList(new DummyNormalizer());				BinnedPeak addedPeak;		// keep track of locations that are in both lists so we don't 		// redo them.		Iterator<BinnedPeak> iter = addedParticle.iterator();		ArrayList<Integer> locationsGrabbed = new ArrayList<Integer>();		float centroidArea;		while (iter.hasNext())		{			addedPeak = iter.next();			centroidArea = centroid.getAreaAt(addedPeak.key);			locationsGrabbed.add(new Integer(addedPeak.key));						returnList.addNoChecks(addedPeak.key, 					centroidArea + 					(addedPeak.value-centroidArea)*learningRate);		}				BinnedPeak centroidPeak;		float addedArea;		boolean alreadyAdded;				iter = centroid.iterator(); // iterator is now over CENTROID		while (iter.hasNext())		{			centroidPeak = iter.next();			alreadyAdded = false;			for (int j = 0; j < locationsGrabbed.size(); j++)				if (centroidPeak.key == 					locationsGrabbed.get(j).intValue())					alreadyAdded = true;			if (!alreadyAdded)			{				addedArea = addedParticle.getAreaAt(						centroidPeak.key);								returnList.addNoChecks(centroidPeak.key,						centroidPeak.value +						(addedArea-centroidPeak.value) *						learningRate);			}		}		return returnList;	}		/* (non-Javadoc)	 * @see analysis.CollectionDivider#divide()	 */	public int divide() 	{		int returnThis = assignAtomsToNearestCentroid(				processPart(new ArrayList<Centroid>(), curs), curs, vigilance);		return returnThis;	}		public int cluster()	{		return divide();	}	/* (non-Javadoc)	 * @see analysis.CollectionDivider#setCursorType(int)	 */	public boolean setCursorType(int type) 	{		// TODO: no memory binned cursor here anymore; have to fix eventually.		switch (type) {		case CollectionDivider.DISK_BASED :			curs = new NonZeroCursor(db.getClusteringCursor(db.getCollection(collectionID), clusterInfo));			return true;		case CollectionDivider.STORE_ON_FIRST_PASS : 		    curs = new NonZeroCursor(db.getMemoryClusteringCursor(db.getCollection(collectionID), clusterInfo));			return true;		default :			return false;		}	}		private ArrayList<Centroid> processPart(ArrayList<Centroid> centroidList,			NonZeroCursor curs)	{		int particleCount;		ParticleInfo thisParticleInfo = null;		BinnedPeakList thisBinnedPeakList = null;		int closestCentroidIndex = -1;		double nearestDistance;		boolean withinVigilance = false;		double distance;		int chosenCluster = 0;				double minTotalStableDistance = Double.POSITIVE_INFINITY;		int iterationsSinceNewMin = 0;		boolean stable = false;				for (int passIndex = 0; passIndex < numPasses && !stable; passIndex++)		{ // for each pass			System.out.println("Pass #:" + passIndex);			particleCount = 0;			totalDistancePerPass.add(new Double(0));			ArrayList<BinnedPeakList> array;			while(curs.next())			{ // while there are particles remaining				particleCount++;				//System.out.println("particleCount = " + 				//		particleCount);				thisParticleInfo = curs.getCurrent();				thisBinnedPeakList = thisParticleInfo.getBinnedList();				thisBinnedPeakList.preProcess(power);				thisBinnedPeakList.normalize(distanceMetric);														// no centroid will be found further than the vigilance				// since that centroid would not be considered				nearestDistance = vigilance + 1;				withinVigilance = false;				for (int centroidIndex = 0; 					 centroidIndex < centroidList.size(); 					 centroidIndex++)				{// for each centroid					distance = centroidList.get(centroidIndex).peaks.						getDistance(thisBinnedPeakList,distanceMetric);					if (distance <= vigilance)					{// if cluster is within the vigilance						if (distance < nearestDistance)						{							nearestDistance = distance;							chosenCluster = centroidIndex;							withinVigilance = true;						}					}// end if each cluster is within the vigilance				}// end for each centroid				if (withinVigilance)				{// if atom falls within existing cluster					Centroid temp = centroidList.get(chosenCluster);					totalDistancePerPass.set(passIndex,							new Double(totalDistancePerPass.get(										passIndex).doubleValue() 											+ nearestDistance));					temp.numMembers++;					temp.peaks = adjustByLearningRate(thisBinnedPeakList, 							centroidList.get(chosenCluster).peaks);					temp.peaks.normalize(distanceMetric);				}// end if atom falls within existing cluster								else				{					System.out.println("Adding new centroid");					centroidList.add(new Centroid (thisBinnedPeakList,1));				}			}// end while there are particles remaining			System.out.println("about to reset");			curs.reset();						// remove outliers (an outlier is defined as any cluster			// containing less than .5% of the total number of particles			float outlierThreshold = 0.005f;			int i = 0;			int tempNumMembers;			while(i < centroidList.size())			{ // for each centroid				Centroid temp = centroidList.get(i);				tempNumMembers = temp.numMembers;				temp.numMembers = 0;				if (tempNumMembers < outlierThreshold * particleCount)				{					System.out.println("Removing outlier centroid");					centroidList.remove(i);				}				else					i++;			} // end for each centroid						// Update stable distances, and see if can quit early.		    float distNow = totalDistancePerPass.get(passIndex).floatValue();		    if (distNow < minTotalStableDistance) {			    // Still made some progress, keep going.		        iterationsSinceNewMin = 0;		        minTotalStableDistance = distNow;		    } else if (iterationsSinceNewMin < stableIterations)		        // Made no progress, but might make more with time.		        iterationsSinceNewMin++;		    else			    // Made no progress in many iterations. Stop.			    stable = true;			} // end for each pass		//curs.close();		zeroPeakListParticleCount = curs.getZeroCount();		return centroidList;	}}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久国产精品韩国三级视频| 亚洲一区二区在线免费看| 麻豆精品久久久| 欧美一卡二卡在线观看| 爽爽淫人综合网网站 | 丁香亚洲综合激情啪啪综合| 2020国产精品久久精品美国| 国产二区国产一区在线观看| 国产精品国产三级国产普通话蜜臀| 99热国产精品| 亚洲电影在线免费观看| 日韩美女视频一区二区在线观看| 国产一区中文字幕| 中文字幕亚洲一区二区av在线| 91精彩视频在线观看| 天天综合色天天| 久久久久国产精品厨房| 91在线精品一区二区| 午夜精品久久久久久久久久久| 日韩一级视频免费观看在线| 东方aⅴ免费观看久久av| 亚洲一区二区三区激情| 欧美va在线播放| 91视频国产观看| 欧美a一区二区| 国产精品看片你懂得| 欧洲另类一二三四区| 国产一区二区三区日韩| 一区二区三区欧美日韩| 久久免费美女视频| 欧美性生活影院| 国产盗摄精品一区二区三区在线| 一区二区三区四区蜜桃| 精品99久久久久久| 色妞www精品视频| 国产真实精品久久二三区| 亚洲欧美日韩久久精品| 精品国产第一区二区三区观看体验| 成人18视频日本| 男人的j进女人的j一区| 亚洲日本在线天堂| 欧美精品一区二区高清在线观看| 欧洲一区在线电影| 成人一区二区三区视频| 麻豆视频一区二区| 亚洲一区二区三区在线播放| 中文字幕巨乱亚洲| 日韩视频免费观看高清完整版| 91视频国产资源| 成人一区二区三区在线观看| 麻豆成人免费电影| 亚洲第一福利一区| 国产精品国产三级国产普通话三级| 日韩精品中文字幕在线不卡尤物| 91国模大尺度私拍在线视频| 成人在线综合网| 国产一区二区三区免费在线观看| 日韩高清电影一区| 亚洲成人777| 尤物在线观看一区| 中文字幕一区二区在线播放| 久久久久一区二区三区四区| 日韩欧美中文字幕制服| 欧美欧美欧美欧美| 欧美私模裸体表演在线观看| 91女神在线视频| 不卡的av在线播放| 丁香另类激情小说| 国产美女视频91| 国产揄拍国内精品对白| 国模无码大尺度一区二区三区| 男女激情视频一区| 美女高潮久久久| 日本午夜一区二区| 免费观看成人av| 全国精品久久少妇| 蜜臀a∨国产成人精品| 欧美a级一区二区| 毛片一区二区三区| 久久99久久精品欧美| 美女视频黄 久久| 久久99精品久久只有精品| 久久电影网站中文字幕 | 日韩欧美中文字幕一区| 91精品国产91综合久久蜜臀| 91精品婷婷国产综合久久 | 久草中文综合在线| 国内精品伊人久久久久影院对白| 国产一区二区三区四区五区美女 | 在线看日韩精品电影| 欧美性高清videossexo| 欧美日韩成人综合| 8x福利精品第一导航| 欧美成人性福生活免费看| 久久久久久久综合狠狠综合| 日本一区二区三区国色天香 | 亚洲婷婷国产精品电影人久久| 中文字幕中文字幕中文字幕亚洲无线| 国产精品国模大尺度视频| 亚洲激情成人在线| 日日摸夜夜添夜夜添国产精品| 免费人成精品欧美精品| 国产一区二区在线观看免费| 波多野结衣视频一区| 91福利资源站| 日韩免费观看高清完整版| 久久精品日产第一区二区三区高清版| 国产精品传媒入口麻豆| 日韩精品1区2区3区| 国产主播一区二区| 色综合av在线| 日韩欧美一区二区三区在线| 国产精品丝袜在线| 午夜久久久久久电影| 国产高清成人在线| 欧美久久婷婷综合色| 欧美激情中文不卡| 性做久久久久久久久| 国产福利电影一区二区三区| 日本韩国精品一区二区在线观看| 日韩欧美国产精品一区| 亚洲色图第一区| 久久精品国产99国产| 91视频观看免费| 2021中文字幕一区亚洲| 亚洲一区二区三区四区在线免费观看 | 欧美一区二区三区不卡| 日韩一区有码在线| 久久99精品久久久久久| 91美女蜜桃在线| 久久久久久久久久美女| 亚洲国产人成综合网站| 国产精品99精品久久免费| 在线91免费看| 亚洲免费在线看| 国产成人在线影院| 日韩视频永久免费| 亚洲欧美激情在线| 成人午夜精品一区二区三区| 日韩一级黄色片| 亚洲综合视频网| 99久久久国产精品| 久久久国际精品| 麻豆91精品91久久久的内涵| 欧美一a一片一级一片| 一色屋精品亚洲香蕉网站| 国产乱码精品一区二区三区av| 欧美人与禽zozo性伦| 亚洲综合一区二区精品导航| 成人激情小说网站| 国产三级欧美三级日产三级99| 青娱乐精品视频| 欧美日本免费一区二区三区| 亚洲图片另类小说| 99久久综合精品| 国产精品毛片久久久久久| 国产高清不卡一区| 国产三级精品三级在线专区| 精久久久久久久久久久| 欧美刺激脚交jootjob| 热久久国产精品| 91精品国产色综合久久不卡蜜臀| 亚洲国产一区二区视频| 在线观看欧美黄色| 亚洲一区在线看| 欧美视频精品在线观看| 亚洲一区视频在线观看视频| 91福利视频网站| 亚洲国产精品欧美一二99| 欧美日韩在线播| 午夜在线成人av| 欧美一区二区三区电影| 精品一区二区日韩| 国产亚洲欧美日韩在线一区| 国产经典欧美精品| 国产精品青草久久| 色综合天天天天做夜夜夜夜做| 亚洲免费在线观看| 欧美视频一区二区在线观看| 亚洲成人精品影院| 日韩欧美一区电影| 国内不卡的二区三区中文字幕| 国产无一区二区| 91亚洲国产成人精品一区二区三| 亚洲精品视频在线观看网站| 欧美视频在线观看一区| 免费成人结看片| 国产亚洲短视频| 色一情一伦一子一伦一区| 亚洲国产精品精华液网站| 日韩一区和二区| 国产成人精品三级| 最新中文字幕一区二区三区| 欧美性受极品xxxx喷水| 麻豆91免费观看| 日韩美女视频19| 欧美精品日韩精品| 国产精品系列在线观看| 专区另类欧美日韩| 91精品国产一区二区三区蜜臀|