數據挖掘源碼
① 數據挖掘源代碼
基本Kmeans演算法實現 C++代碼
#include<iostream>
#include<sstream>
#include<fstream>
#include<vector>
#include<math.h>
#include<stdlib.h>
#definek3//簇的數目
usingnamespacestd;
//存放元組的屬性信息
typedefvector<double>Tuple;//存儲每條數據記錄
intdataNum;//數據集中數據記錄數目
intdimNum;//每條記錄的維數
//計算兩個元組間的歐幾里距離
doublegetDistXY(constTuple&t1,constTuple&t2)
{
doublesum=0;
for(inti=1;i<=dimNum;++i)
{
sum+=(t1[i]-t2[i])*(t1[i]-t2[i]);
}
returnsqrt(sum);
}
//根據質心,決定當前元組屬於哪個簇
intclusterOfTuple(Tuplemeans[],constTuple&tuple){
doubledist=getDistXY(means[0],tuple);
doubletmp;
intlabel=0;//標示屬於哪一個簇
for(inti=1;i<k;i++){
tmp=getDistXY(means[i],tuple);
if(tmp<dist){dist=tmp;label=i;}
}
returnlabel;
}
//獲得給定簇集的平方誤差
doublegetVar(vector<Tuple>clusters[],Tuplemeans[]){
doublevar=0;
for(inti=0;i<k;i++)
{
vector<Tuple>t=clusters[i];
for(intj=0;j<t.size();j++)
{
var+=getDistXY(t[j],means[i]);
}
}
//cout<<"sum:"<<sum<<endl;
returnvar;
}
//獲得當前簇的均值(質心)
TuplegetMeans(constvector<Tuple>&cluster){
intnum=cluster.size();
Tuplet(dimNum+1,0);
for(inti=0;i<num;i++)
{
for(intj=1;j<=dimNum;++j)
{
t[j]+=cluster[i][j];
}
}
for(intj=1;j<=dimNum;++j)
t[j]/=num;
returnt;
//cout<<"sum:"<<sum<<endl;
}
voidprint(constvector<Tuple>clusters[])
{
for(intlable=0;lable<k;lable++)
{
cout<<"第"<<lable+1<<"個簇:"<<endl;
vector<Tuple>t=clusters[lable];
for(inti=0;i<t.size();i++)
{
cout<<i+1<<".(";
for(intj=0;j<=dimNum;++j)
{
cout<<t[i][j]<<",";
}
cout<<") ";
}
}
}
voidKMeans(vector<Tuple>&tuples){
vector<Tuple>clusters[k];//k個簇
Tuplemeans[k];//k個中心點
inti=0;
//一開始隨機選取k條記錄的值作為k個簇的質心(均值)
srand((unsignedint)time(NULL));
for(i=0;i<k;){
intiToSelect=rand()%tuples.size();
if(means[iToSelect].size()==0)
{
for(intj=0;j<=dimNum;++j)
{
means[i].push_back(tuples[iToSelect][j]);
}
++i;
}
}
intlable=0;
//根據默認的質心給簇賦值
for(i=0;i!=tuples.size();++i){
lable=clusterOfTuple(means,tuples[i]);
clusters[lable].push_back(tuples[i]);
}
doubleoldVar=-1;
doublenewVar=getVar(clusters,means);
cout<<"初始的的整體誤差平方和為:"<<newVar<<endl;
intt=0;
while(abs(newVar-oldVar)>=1)//當新舊函數值相差不到1即准則函數值不發生明顯變化時,演算法終止
{
cout<<"第"<<++t<<"次迭代開始:"<<endl;
for(i=0;i<k;i++)//更新每個簇的中心點
{
means[i]=getMeans(clusters[i]);
}
oldVar=newVar;
newVar=getVar(clusters,means);//計算新的准則函數值
for(i=0;i<k;i++)//清空每個簇
{
clusters[i].clear();
}
//根據新的質心獲得新的簇
for(i=0;i!=tuples.size();++i){
lable=clusterOfTuple(means,tuples[i]);
clusters[lable].push_back(tuples[i]);
}
cout<<"此次迭代之後的整體誤差平方和為:"<<newVar<<endl;
}
cout<<"Theresultis: ";
print(clusters);
}
intmain(){
charfname[256];
cout<<"請輸入存放數據的文件名:";
cin>>fname;
cout<<endl<<"請依次輸入:維數樣本數目"<<endl;
cout<<endl<<"維數dimNum:";
cin>>dimNum;
cout<<endl<<"樣本數目dataNum:";
cin>>dataNum;
ifstreaminfile(fname);
if(!infile){
cout<<"不能打開輸入的文件"<<fname<<endl;
return0;
}
vector<Tuple>tuples;
//從文件流中讀入數據
for(inti=0;i<dataNum&&!infile.eof();++i)
{
stringstr;
getline(infile,str);
istringstreamistr(str);
Tupletuple(dimNum+1,0);//第一個位置存放記錄編號,第2到dimNum+1個位置存放實際元素
tuple[0]=i+1;
for(intj=1;j<=dimNum;++j)
{
istr>>tuple[j];
}
tuples.push_back(tuple);
}
cout<<endl<<"開始聚類"<<endl;
KMeans(tuples);
return0;
}
② 基於web的數據挖掘 如何實現
可以使用VB自做一個。非常簡單,如果VB你能作出來那麼基於ASP的就哼容易。你可以參考一下VB的歌詞收錄的東西
③ 急求!數據挖掘聚類、分類、關聯演算法java源碼,大神幫幫忙。麻煩傳個
首先自己確定用什麼演算法,然後自己去網上找對應的實現。思路是相通的
④ 誰有數據挖掘演算法源代碼啊
你也研究演算法啊,我也剛開始,交個朋友唄,2674457337,你可以去程序員網站下載,我那也下載了點MATLAB的,如果是這個,我那也有。基本的。
⑤ 數據挖掘需要哪些技能
需要學習工程能力和演算法能力。
工程能力:
( 1 )編程基礎:需要掌握一大一小兩門語言,大的指 C++ 或者 Java ,小的指Python 或者 shell 腳本;需要掌握基本的資料庫語言。
( 2 )開發平台: Linux ;建議:掌握常見的命令,掌握 Linux 下的源碼編譯原理。
( 3 )數據結構與演算法分析基礎:掌握常見的數據結構以及操作。
演算法能力:
( 1 )數學基礎:概率論,數理統計,線性代數,隨機過程,最優化理論。
( 2 )機器學習 / 深度學習:掌握 常見的機器學習模型(線性回歸,邏輯回歸, SVM ,感知機;決策樹,隨機森林, GBDT , XGBoost ;貝葉斯, KNN , K-means , EM 等)。
關於數據挖掘的相關學習,推薦CDA數據師的相關課程,課程以項目調動學員數據挖掘實用能力的場景式教學為主,在講師設計的業務場景下由講師不斷提出業務問題,再由學員循序漸進思考並操作解決問題的過程中,幫助學員掌握真正過硬的解決業務問題的數據挖掘能力點擊預約免費試聽課。
⑥ 誰有數據挖掘演算法的源碼
已經給你發了,分拿來
⑦ 求助高手,數據挖掘相關的程序源代碼,跪求啊!!!
.........\Ada_Boost.m
function D = ada_boost(train_features, train_targets, params, region);
% Classify using the AdaBoost algorithm
% Inputs:
% features - Train features
% targets - Train targets
% Params - [NumberOfIterations, Weak Learner Type, Learner's parameters]
% region - Decision region vector: [-x x -y y number_of_points]
%
% Outputs
% D - Decision sufrace
%
% NOTE: This algorithm is very tuned to the 2D nature of the toolbox!
[k_max, weak_learner, alg_param] = process_params(params);
[Ni,M] = size(train_features);
D = zeros(region(5));
W = ones(1,M)/M;
IterDisp = 10;
%Find where the training features fall on the decision grid
N = region(5);
mx = ones(N,1) * linspace (region(1),region(2),N);
my = linspace (region(3),region(4),N)' * ones(1,N);
flatxy = [mx(:), my(:)]';
train_loc = zeros(1,M);
for i = 1:M,
dist = sqrt(sum((flatxy - train_features(:,i)*ones(1,N^2)).^2));
[m, train_loc(i)] = min(dist);
end
%Do the AdaBoosting
for k = 1:k_max,
%Train weak learner Ck using the data sampled according to W:
%...so sample the data according to W
randnum = rand(1,M);
cW = cumsum(W);
indices = zeros(1,M);
for i = 1:M,
%Find which bin the random number falls into
loc = max(find(randnum(i) > cW))+1;
if isempty(loc)
indices(i) = 1;
else
indices(i) = loc;
end
end
%...and now train the classifier
Ck = feval(weak_learner, train_features(:, indices), train_targets(indices), alg_param, region);
Ckl = Ck(:);
%Ek <- Training error of Ck
Ek = sum(W.*(Ckl(train_loc)' ~= train_targets));
if (Ek == 0),
break
end
%alpha_k <- 1/2*ln(1-Ek)/Ek)
alpha_k = 0.5*log((1-Ek)/Ek);
%W_k+1 = W_k/Z*exp(+/-alpha)
W = W.*exp(alpha_k*(xor(Ckl(train_loc)',train_targets)*2-1));
W = W./sum(W);
%Update the decision region
D = D + alpha_k*(2*Ck-1);
if (k/IterDisp == floor(k/IterDisp)),
disp(['Completed ' num2str(k) ' boosting iterations'])
end
end
D = D>
⑧ 基於數據挖掘的知識管理系統的源代碼
要求這么多,連個懸賞都沒有
就算有懸賞,估計也沒人給你
起碼要給人民幣吧,少了也不行
市場經濟時期了,有病才給你
而且你這應該叫,剽竊他人成果
誰給你,誰傻蛋。
這個回答絕對是標准答案,lz不用考慮其他回答了。
⑨ 數據挖掘分類演算法的源碼有哪些
在R語言中可以用Rpart函數調取