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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? garff.cpp

?? 一個非常有用的開源代碼
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
		{			if(pRow2[nIndex] != pRow1[nIndex])				dSum += pInputScales[n];		}	}	return dSum;}// ------------------------------------------------------------------GArffAttribute::GArffAttribute(){	m_szName = NULL;	m_nValues = 0;	m_szValues = NULL;	m_bIsInput = true;}GArffAttribute::GArffAttribute(bool bIsInput, int nValues, const char** szValues){	m_szName = NULL;	m_nValues = nValues;	if(nValues == 0)		m_szValues = NULL;	else	{		if(szValues)		{			m_szValues = new char*[nValues];			int n;			for(n = 0; n < nValues; n++)			{				m_szValues[n] = new char[strlen(szValues[n]) + 1];				strcpy(m_szValues[n], szValues[n]);			}		}		else			m_szValues = NULL;	}	m_bIsInput = bIsInput;}GArffAttribute::~GArffAttribute(){	delete(m_szName);	if(m_szValues)	{		int n;		for(n = 0; n < m_nValues; n++)			delete(m_szValues[n]);		delete(m_szValues);	}}GArffAttribute* GArffAttribute::NewCopy(){	return new GArffAttribute(m_bIsInput, m_nValues, (const char**)m_szValues);}/*static*/ GArffAttribute* GArffAttribute::Parse(const char* szFile, int nLen){	// Eat whitespace	while(nLen > 0 && *szFile <= ' ')	{		if(*szFile == '\n')			return NULL;		szFile++;		nLen--;	}	if(nLen < 1)		return NULL;	// Parse the name	Holder<GArffAttribute*> hAttr(new GArffAttribute());	GArffAttribute* pAttr = hAttr.Get();	int nQuotes = 0;	if(szFile[0] == '\'' || szFile[0] == '"')		nQuotes = 1;	int nPos = 1;	for( ; nPos < nLen && (szFile[nPos] > ' ' || nQuotes > 0); nPos++)	{		if(szFile[nPos] == '\'' || szFile[nPos] == '"')			nQuotes--;	}	pAttr->m_szName = new char[nPos + 1];	memcpy(pAttr->m_szName, szFile, nPos);	pAttr->m_szName[nPos] = '\0';	// Eat whitespace	while(nPos < nLen && szFile[nPos] <= ' ')	{		if(szFile[nPos] == '\n')			return NULL;		nPos++;	}	if(nPos >= nLen)		return NULL;	// Check for CONTINUOUS	if(nLen - nPos >= 10 && strnicmp(&szFile[nPos], "CONTINUOUS", 10) == 0)		return hAttr.Drop();	if(nLen - nPos >= 7 && strnicmp(&szFile[nPos], "NUMERIC", 7) == 0)		return hAttr.Drop();	if(nLen - nPos >= 4 && strnicmp(&szFile[nPos], "REAL", 4) == 0)		return hAttr.Drop();	// Parse the values	if(szFile[nPos] != '{')		return NULL;	nPos++;	// Count the values	int nCount = 1;	int n;	for(n = nPos; szFile[n] != '{' && szFile[n] != '\n' && n < nLen; n++)	{		if(szFile[n] == ',')			nCount++;	}	// Parse the values	pAttr->m_szValues = new char*[nCount];	pAttr->m_nValues = nCount;	int nValue = 0;	for(n = nPos; szFile[n] != '}' && szFile[n] != '\n' && n < nLen; n++)	{		if(szFile[n] == ',')		{			int nStart = nPos;			int nEnd = n;			while(nStart < nEnd && szFile[nStart] <= ' ')				nStart++;			while(nStart < nEnd && szFile[nEnd - 1] <= ' ')				nEnd--;			pAttr->m_szValues[nValue] = new char[nEnd - nStart + 1];			memcpy(pAttr->m_szValues[nValue], &szFile[nStart], nEnd - nStart);			(pAttr->m_szValues[nValue])[nEnd - nStart] = '\0';			nPos = n + 1;			nValue++;		}	}	int nStart = nPos;	int nEnd = n;	while(nStart < nEnd && szFile[nStart] <= ' ')		nStart++;	while(nStart < nEnd && szFile[nEnd - 1] <= ' ')		nEnd--;	pAttr->m_szValues[nValue] = new char[nEnd - nStart + 1];	memcpy(pAttr->m_szValues[nValue], &szFile[nStart], nEnd - nStart);	(pAttr->m_szValues[nValue])[nEnd - nStart] = '\0';	if(szFile[n] != '}')		return NULL;	return hAttr.Drop();}void GArffAttribute::SetContinuous(){	if(m_szValues)	{		int n;		for(n = 0; n < m_nValues; n++)			delete(m_szValues[n]);		delete(m_szValues);	}	m_szValues = NULL;	m_nValues = 0;}int GArffAttribute::GetValueCount(){	return m_nValues;}const char* GArffAttribute::GetValue(int n){	if(n < 0)	{		GAssert(n == -1, "out of range");		return "<?>";	}	GAssert(n < m_nValues, "out of range");	return m_szValues[n];}int GArffAttribute::FindEnumeratedValue(const char* szValue){	GAssert(!IsContinuous(), "Not an enumerated attribute");	int n;	for(n = 0; n < m_nValues; n++)	{		if(strcmp(m_szValues[n], szValue) == 0)			return n;	}	return -1;}// ------------------------------------------------------------------GArffData::GArffData(int nGrowSize): GPointerArray(nGrowSize){}GArffData::~GArffData(){	int nCount = GetSize();	int n;	for(n = 0; n < nCount; n++)		delete[] (double*)GetPointer(n);}void GArffData::CopyVector(double* pVector, int nAttributeCount){	double* pNewVector = new double[nAttributeCount];	memcpy(pNewVector, pVector, sizeof(double) * nAttributeCount);	AddVector(pNewVector);}double* GArffData::DropVector(int nIndex){	int nCount = GetSize();	double* pVector = GetVector(nIndex);	SetPointer(nIndex, GetPointer(nCount - 1));	DeleteCell(nCount - 1);	return pVector;}void GArffData::DropAllVectors(){	Clear();}void GArffData::Shuffle(){	// Swap every row with a randomely selected row	int nCount = GetSize();	int n, r;	void* pTemp;	for(n = nCount - 1; n > 0; n--)	{		r = rand() % n;		pTemp = GetPointer(r);		SetPointer(r, GetPointer(n));		SetPointer(n, pTemp);	}}double GArffData::MeasureEntropy(GArffRelation* pRelation, int nColumn){	// Count the number of occurrences of each value	GArffAttribute* pAttr = pRelation->GetAttribute(nColumn);	GAssert(!pAttr->IsInput(), "Expected an output");	GAssert(!pAttr->IsContinuous(), "MeasureEntropy doesn't work with continuous attributes");	int nPossibleValues = pAttr->GetValueCount();	GTEMPBUF(int, pnCounts, nPossibleValues);	int nTotalCount = 0;	memset(pnCounts, '\0', pAttr->GetValueCount() * sizeof(int));	int n;	int nRows = GetSize();	for(n = 0; n < nRows; n++)	{		int nValue = (int)GetVector(n)[nColumn];		if(nValue < 0)		{			GAssert(nValue == -1, "out of range");			continue;		}		GAssert(nValue < nPossibleValues, "value out of range");		pnCounts[nValue]++;		nTotalCount++;	}	if(nTotalCount == 0)		return 0;	// Total up the entropy	double dLog2 = log((double)2);	double dEntropy = 0;	double dRatio;	for(n = 0; n < nPossibleValues; n++)	{		if(pnCounts[n] > 0)		{			dRatio = (double)pnCounts[n] / nTotalCount;			dEntropy -= (dRatio * log(dRatio) / dLog2);		}	}	return dEntropy;}GArffData* GArffData::SplitByPivot(int nColumn, double dPivot){	GArffData* pNewSet = new GArffData(MAX(8, GetSize()));	double* pRow;	int n;	for(n = 0; n < GetSize(); n++)	{		pRow = GetVector(n);		if(pRow[nColumn] <= dPivot)		{			pNewSet->AddVector(DropVector(n));			n--;		}	}	return pNewSet;}int DoubleRefComparer(void* pThis, void* pA, void* pB){	if(*(double*)pA > *(double*)pB)		return 1;	if(*(double*)pA < *(double*)pB)		return -1;	return 0;}GArffData** GArffData::SplitByAttribute(GArffRelation* pRelation, int nAttribute){	GArffAttribute* pAttr = pRelation->GetAttribute(nAttribute);	GAssert(pAttr->IsInput(), "Expected an input");	int nCount = pAttr->GetValueCount();	GAssert(nCount > 0, "Only discreet values are supported");	GArffData** ppParts = new GArffData*[nCount];	int n;	for(n = 0; n < nCount; n++)		ppParts[n] = SplitByPivot(nAttribute, (double)n);	GAssert(GetSize() == 0, "some data out of range");	return ppParts;}GArffData* GArffData::SplitBySize(int nRows){	GAssert(nRows >= 0 && nRows <= GetSize(), "out of range");	GArffData* pNewSet = new GArffData(MAX(8, GetSize() - nRows));	while(GetSize() > nRows)		pNewSet->AddVector(DropVector(nRows));	return pNewSet;}void GArffData::Merge(GArffData* pData){	while(pData->GetSize() > 0)		AddVector(pData->DropVector(0));}void GArffData::DiscretizeNonContinuousOutputs(GArffRelation* pRelation){	int nOutputs = pRelation->GetOutputCount();	int n, nIndex, i, nValueCount, nVal;	int nRowCount = GetSize();	double* pRow;	for(n = 0; n < nOutputs; n++)	{		nIndex = pRelation->GetOutputIndex(n);		GArffAttribute* pAttr = pRelation->GetAttribute(nIndex);		if(pAttr->IsContinuous())			continue;		nValueCount = pAttr->GetValueCount();		for(i = 0; i < nRowCount; i++)		{			pRow = GetVector(i);			nVal = (int)(pRow[nIndex] - .5);			if(nVal < 0)				nVal = 0;			else if(nVal >= nValueCount)				nVal = nValueCount - 1;			pRow[nIndex] = (double)nVal;		}	}}double GArffData::ComputeMean(int nAttribute){	double dMean = 0;	int nRowCount = GetSize();	double* pRow;	int i;	for(i = 0; i < nRowCount; i++)	{		pRow = GetVector(i);		dMean += pRow[nAttribute];	}	return dMean / nRowCount;}void GArffData::GetMeans(double* pOutMeans, int nAttributes){	int n;	for(n = 0; n < nAttributes; n++)		pOutMeans[n] = 0;	int nRowCount = GetSize();	double* pRow;	int i;	for(i = 0; i < nRowCount; i++)	{		pRow = GetVector(i);		for(n = 0; n < nAttributes; n++)			pOutMeans[n] += pRow[n];	}	for(n = 0; n < nAttributes; n++)		pOutMeans[n] /= nRowCount;}double GArffData::ComputeVariance(double dMean, int nAttribute){	double dVariance = 0;	double* pRow;	double d;	int i;	int nRowCount = GetSize();	for(i = 0; i < nRowCount; i++)	{		pRow = GetVector(i);		d = pRow[nAttribute] - dMean;		dVariance += (d * d);	}	return dVariance / nRowCount;}void GArffData::GetVariance(double* pOutVariance, double* pMeans, int nAttributes){	int n;	for(n = 0; n < nAttributes; n++)		pOutVariance[n] = 0;	int nRowCount = GetSize();	double* pRow;	int i;	for(i = 0; i < nRowCount; i++)	{		pRow = GetVector(i);		for(n = 0; n < nAttributes; n++)			pOutVariance[n] += ((pRow[n] - pMeans[n]) * (pRow[n] - pMeans[n]));	}	for(n = 0; n < nAttributes; n++)		pOutVariance[n] /= nRowCount;}int GArffData::RemoveOutlyers(double dStandardDeviations, int nAttributes){	int nOutlyers = 0;	GTEMPBUF(double, pMeans, nAttributes);	GTEMPBUF(double, pVariance, nAttributes);	GetMeans(pMeans, nAttributes);	GetVariance(pVariance, pMeans, nAttributes);	int n, i;	for(n = 0; n < nAttributes; n++)		pVariance[n] = sqrt(pVariance[n]);	double* pRow;	int nRowCount = GetSize();	for(i = nRowCount - 1; i >= 0; i--)	{		pRow = GetVector(i);		for(n = 0; n < nAttributes; n++)		{			if(ABS(pRow[n] - pMeans[n]) > dStandardDeviations * pVariance[n])			{				delete(DropVector(i));				nOutlyers++;				break;			}		}	}	return nOutlyers;}void GArffData::GetMinAndRange(int nAttribute, double* pMin, double* pRange){	int nCount = GetSize();	GAssert(nCount > 0, "No data");	double* pRow = GetVector(0);	double dMin = pRow[nAttribute];	double dMax = dMin;	int n;	for(n = 1; n < nCount; n++)	{		pRow = GetVector(n);		if(pRow[nAttribute] < dMin)			dMin = pRow[nAttribute];		if(pRow[nAttribute] > dMax)			dMax = pRow[nAttribute];	}	*pMin = dMin;	*pRange = dMax - dMin;}void GArffData::Normalize(int nAttribute, double dInputMin, double dInputRange, double dOutputMin, double dOutputRange){	GAssert(dInputRange > 0, "divide by zero");	int nCount = GetSize();	double* pRow;	double dScale = dOutputRange / dInputRange;	int n;	for(n = 0; n < nCount; n++)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一级在线观看| 色综合网色综合| 欧美一级二级三级蜜桃| 久久精品国产999大香线蕉| 日韩精品在线看片z| 国产69精品久久久久777| 综合色天天鬼久久鬼色| 欧美日韩综合一区| 国产成人精品www牛牛影视| 亚洲欧洲国产专区| 日韩一级大片在线观看| 粉嫩av一区二区三区在线播放| 亚洲欧美日韩国产另类专区| 91精品国产综合久久久久久漫画 | 欧美日韩高清在线播放| 青青草原综合久久大伊人精品| 26uuu国产日韩综合| 日本伦理一区二区| 国产精品正在播放| 天天综合网天天综合色| 欧美激情综合在线| 日韩亚洲欧美成人一区| 色婷婷久久一区二区三区麻豆| 麻豆精品在线视频| 亚洲靠逼com| 国产三级三级三级精品8ⅰ区| 欧美午夜不卡视频| 99视频一区二区三区| 国产在线不卡一区| 日韩激情一区二区| 亚洲精品伦理在线| 中文字幕欧美国产| 日韩精品一区在线观看| 欧美伦理电影网| 91色porny| 波多野结衣亚洲| 国产激情一区二区三区四区| 欧美aaa在线| 亚洲一区欧美一区| 亚洲综合无码一区二区| 中文字幕av一区二区三区高| 久久嫩草精品久久久久| 精品国产伦理网| 日韩一区二区三区av| 欧美日韩精品一区二区三区| 91久久国产综合久久| 91丨九色丨蝌蚪丨老版| 成人福利视频网站| 丁香天五香天堂综合| 国产精品123| 成人看片黄a免费看在线| 国产乱淫av一区二区三区| 国产在线日韩欧美| 国产高清视频一区| 成人午夜av影视| av福利精品导航| av一区二区三区黑人| 99久久99精品久久久久久| va亚洲va日韩不卡在线观看| gogo大胆日本视频一区| 99久久99久久精品免费看蜜桃| 成人av电影在线观看| 成人国产精品免费观看视频| a4yy欧美一区二区三区| 色8久久人人97超碰香蕉987| 欧美日韩一区精品| 在线播放中文字幕一区| 精品免费日韩av| 国产无遮挡一区二区三区毛片日本| 精品理论电影在线| 国产情人综合久久777777| 国产精品成人一区二区三区夜夜夜| 中文字幕亚洲一区二区va在线| 一区二区三区欧美视频| 日韩专区中文字幕一区二区| 麻豆国产欧美日韩综合精品二区| 精品一区二区在线播放| 成人国产一区二区三区精品| 色成年激情久久综合| 91精品国产91久久久久久一区二区| 91精品国产aⅴ一区二区| 久久精品欧美日韩| 亚洲一区免费视频| 国产一区二区看久久| 97久久超碰国产精品| 欧美一区二区三区在| 欧美极品少妇xxxxⅹ高跟鞋 | 91国偷自产一区二区使用方法| 欧美日韩久久一区| 久久精品视频在线免费观看| 亚洲女厕所小便bbb| 免费在线看一区| 99国产精品国产精品久久| 日韩欧美www| 亚洲综合免费观看高清完整版 | 精品国产成人在线影院| 亚洲视频香蕉人妖| 国产主播一区二区三区| 欧美人与禽zozo性伦| 国产精品萝li| 韩日欧美一区二区三区| 欧美中文字幕一区二区三区| 国产欧美日韩激情| 日一区二区三区| 色香蕉成人二区免费| 国产精品午夜电影| 老汉av免费一区二区三区| 欧洲一区二区三区在线| 国产婷婷一区二区| 精品一区二区三区免费播放| 在线观看日韩电影| 国产精品不卡一区| 国产精品亚洲视频| 久久亚洲一级片| 久久国产欧美日韩精品| 欧美女孩性生活视频| 一卡二卡三卡日韩欧美| 99久久精品国产导航| 国产精品色婷婷久久58| 国产99精品视频| 久久嫩草精品久久久久| 国产综合色精品一区二区三区| 884aa四虎影成人精品一区| 一区二区激情视频| 在线观看av一区| 亚洲最大色网站| 一本到三区不卡视频| 国产欧美精品在线观看| 国产一区二区三区黄视频 | 欧美专区日韩专区| 亚洲欧美成人一区二区三区| 91亚洲精华国产精华精华液| 中文字幕亚洲成人| 91麻豆文化传媒在线观看| 亚洲天堂网中文字| 欧美三级中文字| 视频在线观看91| 欧美mv日韩mv亚洲| 国产传媒久久文化传媒| 亚洲国产经典视频| 在线视频你懂得一区| 日韩中文字幕区一区有砖一区 | 欧美男女性生活在线直播观看 | 精品久久久久av影院| 国产一区二区精品久久| 久久精品视频网| www.在线成人| 亚洲丰满少妇videoshd| 日韩一卡二卡三卡四卡| 国产精品一级片在线观看| 亚洲视频香蕉人妖| 欧美一区午夜视频在线观看| 久久99久久99精品免视看婷婷 | 日韩电影一区二区三区| 精品国产污污免费网站入口| 国产jizzjizz一区二区| 亚洲欧美日韩成人高清在线一区| 欧美精品 国产精品| 国产风韵犹存在线视精品| 国产精品二区一区二区aⅴ污介绍| 在线免费一区三区| 国内精品国产三级国产a久久| 中文字幕一区二区三区在线播放| 欧美三级日韩三级国产三级| 韩国欧美国产一区| 一区二区三区日本| 久久婷婷综合激情| 色婷婷av一区二区| 久久99久国产精品黄毛片色诱| 中文字幕综合网| 精品国产一区二区精华| 91成人国产精品| 国产 欧美在线| 日韩电影网1区2区| 亚洲视频1区2区| 2020国产精品自拍| 欧美日韩精品欧美日韩精品一| 粉嫩av一区二区三区| 免费精品视频在线| 亚洲制服丝袜av| 国产女主播视频一区二区| 91精品国产综合久久香蕉的特点| 99久久精品国产麻豆演员表| 国产露脸91国语对白| 天天色 色综合| 亚洲乱码国产乱码精品精小说| 久久久久9999亚洲精品| 日韩免费视频一区二区| 精品1区2区3区| 色综合久久天天| 国产成人a级片| 国产一区二区三区香蕉| 免费三级欧美电影| 日韩激情视频在线观看| 亚洲va韩国va欧美va| 亚洲国产综合91精品麻豆| 亚洲免费视频中文字幕| 国产精品初高中害羞小美女文| 欧美激情一区在线观看| 久久人人爽爽爽人久久久|