⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 patterns.cpp

📁 kmean算法的c++实现
💻 CPP
字号:
#include "patterns.h"

void Patterns::add(Pattern pattern)
{
	this->patterns.push_back(pattern);
}

Pattern Patterns::getPattern(int i)
{
	return this->patterns[i];
}

void Patterns::display()
{
	for(int i = 0; i < this->numOfPatterns; i++)
	{
		cout<<"pattern["<<i<<"]: { ";
		for(int j = 0; j < this->numOfDim; j++)
		{
			cout<<patterns[i][j]<<"; ";
		}
		cout<<"}"<<endl;
	}
}

void Patterns::load(int type)
{
	cout<<"enter sample file name: ";
	string fileName;
	cin>>fileName;
	ifstream fin;
	fin.open(fileName.c_str(), ios::in);
	fin>>this->numOfPatterns;//样本数
	fin>>this->numOfDim;//样本维数
	if(type==KMEAN)
	{
		cout<<"enter numOfCluster: ";
		cin>>this->numOfCluster;//要分几类
	}
	else
	{
		fin>>this->numOfCluster;
	}
	if(this->numOfCluster > this->numOfPatterns)
	{
		cout<<"numOfCluster can not bigger than numOfPatterns..."<<endl;
		exit(0);
	}
	/*for(int i = 0; i < this->numOfPatterns; i++)
	{
		Pattern pattern;
		double val = 0;
		for(int j = 0; j < this->numOfDim; j++)
		{
			fin>>val;
			pattern.push_back(val);
		}
		if(type==KNN)//如果是KNN,则还需要读入该样本所属类别
		{
			fin>>val;
			pattern.push_back(val);
		}
		this->add(pattern);
		
	}*/
	//////////////
	for(int i = 0; i < this->numOfPatterns; i++)
	{
		Pattern pattern;
		double val = 0;
		this->add(pattern);
	}
	for(int i = 0; i < this->numOfDim; i++)
	{
		string nosence;
		double val = 0;
		for(int j = 0; j < this->numOfPatterns; j++)
		{
			fin>>val;
			this->patterns[j].push_back(val);
		}
		fin>>nosence;
	}
	/////////////////////////////
	fin.close();
}

double Patterns::caluDistance(Pattern center, Pattern pattern)
{
	double dis = 0;
	for(int i = 0; i < this->numOfDim; i++)
	{
		double v1 = center[i];
		double v2 = pattern[i];
		dis += (center[i] - pattern[i]) * (center[i] - pattern[i]);
	}
	return dis;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -