導航:首頁 > 網路數據 > c大數據四則

c大數據四則

發布時間:2023-01-18 23:23:19

① 用C語言如何實現大數據的加法,且是包括整數和小數的運算

剛寫的 看看符合你要求不

#include<stdio.h>
#include<string.h>
typedefstruct
{
inta[200];
intb[200];
}NUM;
voidformat_num(NUM*n,char*str)
{
char*p_dot=NULL;
char*p;
inti=0;
memset(n,0,sizeof(*n));
for(p=str;*p;p++)
if(*p=='.')break;
if(*p)p_dot=p;

p--;
while(p>=str)
{
n->a[i++]=*p---'0';
}
p=p_dot;
if(p==NULL)return;
i=0;
p++;
while(*p)
n->b[i++]=*p++-'0';
}

voidprint_num(NUM*n)
{
inti,j;
for(i=sizeof(n->a)/sizeof(n->a[0])-1;i>=0;i--)
if(n->a[i])break;
if(i>=0)
for(;i>=0;i--)
printf("%d",n->a[i]);
elseprintf("0");
for(i=sizeof(n->b)/sizeof(n->b[0])-1;i>=0;i--)
if(n->b[i])break;
if(i>=0)
{
printf(".");
for(j=0;j<=i;j++)
printf("%d",n->b[j]);
}
}

voidadd(NUM*a,NUM*b,NUM*c)
{
intt=0;
inti;
for(i=sizeof(a->b)/sizeof(a->b[0])-1;i>=0;i--)
{
t+=a->b[i]+b->b[i];
c->b[i]=t%10;
t/=10;
}
for(i=0;i<sizeof(a->a)/sizeof(a->a[0]);i++)
{
t+=a->a[i]+b->a[i];
c->a[i]=t%10;
t/=10;
}
}

intmain()
{
charsa[100],sb[100];
NUMa,b,c;
scanf("%s%s",sa,sb);
format_num(&a,sa);
format_num(&b,sb);
print_num(&a);
printf("+");
print_num(&b);
printf("=");
add(&a,&b,&c);
print_num(&c);
printf(" ");

return0;
}

② 怎麼用C語言代碼實現超高精度的大數據除法運算要求結果保留到小數點後有兩位

#include<stdio.h>
#include<string.h>
#defineMAX_LEN200
chara[MAX_LEN+10];
charb[MAX_LEN+10];
intva[MAX_LEN+10];//被除數,an1[0]對應於個位
intvb[MAX_LEN+10];//除數,an2[0]對應於個位
intvc[MAX_LEN+10];//存放商,aResult[0]對應於個位
//長度為nLen1的大整數減去長度為nLen2的大整數p2
//結果放在p1里,返回值代表結果的長度
//如不夠減返回-1,正好減完返回0
//下面判斷p1是否比p2大,如果不是,返回-1
intSubstract(int*p1,int*p2,intnLen1,intnLen2)
{
inti;
if(nLen1<nLen2)
return-1;
if(nLen1==nLen2)
{
for(i=nLen1-1;i>=0;i--)
{
if(p1[i]>p2[i])break;//p1>p2
elseif(p1[i]<p2[i])return-1;//p1<p2
}
}
for(i=0;i<nLen1;i++)
{//要求調用本函數確保當i>=nLen2時,p2[i]=0
p1[i]-=p2[i];
if(p1[i]<0)
{
p1[i]+=10;
p1[i+1]--;
}
}
for(i=nLen1-1;i>=0;i--)
if(p1[i])//找到最高位第一個不為0
returni+1;
return0;//全部為0,說明兩者相等
}
intmain()
{
freopen("test.txt","r",stdin);
inttest;
scanf("%d",&test);
while(test--){
scanf("%s",a);
scanf("%s",b);
inti,j;
intlena=strlen(a);
memset(va,0,sizeof(va));
memset(vb,0,sizeof(vb));
memset(vc,0,sizeof(vc));
for(j=0,i=lena-1;i>=0;i--)
va[j++]=a[i]-'0';
intlenb=strlen(b);
for(j=0,i=lenb-1;i>=0;i--)
vb[j++]=b[i]-'0';
if(lena<lenb)
{
printf("0 ");
continue;
}
intnTimes=lena-lenb;
if(nTimes>0)
{
for(i=lena-1;i>=nTimes;i--)
vb[i]=vb[i-nTimes];//朝高位移動
for(;i>=0;i--)//低位補0
vb[i]=0;
lenb=lena;
}
for(j=0;j<=nTimes;j++)
{
intnTmp;
//一直減到不夠減為止
//先減去若干個an2×(10的nTimes次方),
//不夠減了,再減去若干個an2×(10的nTimes-1次方),......
while((nTmp=Substract(va,vb+j,lena,lenb-j))>=0)
{
lena=nTmp;
vc[nTimes-j]++;//每成功減一次,則將商的相應位加1
}
}
//下面輸出結果,先跳過高位0
for(i=MAX_LEN;(i>=0)&&(vc[i]==0);i--);
if(i>=0)
for(;i>=0;i--)
printf("%d",vc[i]);
else
printf("0");
printf(" ");
}
return0;
}

③ 大數據的特徵是什麼

1、容量():數據的大小決定所考慮的數據的價值和潛在的信息;

2、種類(Variety):數據類型的多樣性;

3、速度(Velocity):指獲得數據的速度;

4、可變性(Variability):妨礙了處理和有效地管理數據的過程。

5、真實性(Veracity):數據的質量。

6、復雜性(Complexity):數據量巨大,來源多渠道。

7、價值(value):合理運用大數據,以低成本創造高價值。

(3)c大數據四則擴展閱讀:

大數據的精髓:

大數據帶給我們的三個顛覆性觀念轉變:是全部數據,而不是隨機采樣;是大體方向,而不是精確制導;是相關關系,而不是因果關系。

A、不是隨機樣本,而是全體數據:在大數據時代,我們可以分析更多的數據,有時候甚至可以處理和某個特別現象相關的所有數據,而不再依賴於隨機采樣(隨機采樣,以前我們通常把這看成是理所應當的限制,但高性能的數字技術讓我們意識到,這其實是一種人為限制);

B、不是精確性,而是混雜性:研究數據如此之多,以至於我們不再熱衷於追求精確度;

之前需要分析的數據很少,所以我們必須盡可能精確地量化我們的記錄,隨著規模的擴大,對精確度的痴迷將減弱;擁有了大數據,我們不再需要對一個現象刨根問底,只要掌握了大體的發展方向即可,適當忽略微觀層面上的精確度,會讓我們在宏觀層面擁有更好的洞察力;

C、不是因果關系,而是相關關系:我們不再熱衷於找因果關系,尋找因果關系是人類長久以來的習慣,在大數據時代,我們無須再緊盯事物之間的因果關系,而應該尋找事物之間的相關關系;相關關系也許不能准確地告訴我們某件事情為何會發生,但是它會提醒我們這件事情正在發生。

④ C/C++大數據處理:10Gtxt資料庫文件

10G 連一次導入內存都不行,而且你說的串除了出現1次沒有其他特徵,只能文件分塊讀入用KMP匹配
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 1024*1024*10
int index_KMP(char *s,int n,char *t,int pos);
//利用模式串的t的next函數求t在主串s中的第pos個位置之後的位置的KMP演算法(t非空,1<=pos<=Strlength(s))。

void get_next(char * t,int * next);
//求模式串t的next函數的並存入數組next[]中。
int next[MAX];
int main()
{
char* s= (char*)malloc(MAX+1);
memset(s,0,MAX+1);
char t[256]={0},c;
printf("請輸入檢測字元串,以#號結尾");
int i=0;
while((c=getchar())!='#'&&i<256)
{
t[i++]=c;
}
fflush(stdin);
//strcpy(t,"2014-04-28 18:14:33,333");
get_next(t,next);
FILE* pf = NULL;
if((pf = fopen("1.txt","r"))==NULL){
printf("打不開文件!\n");
return 0;
}
int cur=0,n=0;
unsigned long long pos=0,sum=0;
while(!feof(pf))
{
int len = fread(s,1,MAX,pf);
sum+=len;
printf("讀取第 %5d 次,長度 %5d ,總長:%ld\n",cur+1,len,sum);
n=index_KMP(s,MAX,t,pos);
if(n>0)
{
pos = n+cur*MAX;
break;
}
++cur;
}
fclose(pf);

free(s);
if(n!=0)
printf("\n模式串 t 在主串 s 中第 %ld 個位置之後。\n\n",n);
else
printf("\n主串中不存在與模式串相匹配的子串!\n\n");

}

int index_KMP(char *s,int n,char *t,int pos)
//利用模式串的T的NEXT函數求t在主串s中(長度n)的第pos個位置之後的位置的KMP演算法,(t非空,1<=pos<=Strlength(s)).
{
int i=pos,j=1;
while (i<=n &&j<=(int)strlen(t))
{
if (j==0 || s[i]==t[j-1]) //繼續進行後續字元串的比較
{
i++;
j++;
}

else j=next[j]; //模式串向右移動
}
if (j>(int)strlen(t)) //匹配成功
return i-strlen(t)+1;
else //匹配不成功
return 0;
}

void get_next(char *t,int *next)
//求模式串t的next函數的並存入數組next[]中。
{
int i=1,j=0;
next[0]=next[1]=0;
while (i<(int)strlen(t))
{
if (j==0 || t[i]==t[j])
{
i++;
j++;
next[i]=j;
}
else j=next[j];
}
}
替換文件名,每次讀10M,我測試50M的1S搞定,因為尋找串可能再兩次讀取之間,完美的做法是後一次要把前一次的最後N個字元重新讀取,N為尋找的子串長度,計算長度時需要特殊考慮,我簡略了該種情況

⑤ 大數據經典演算法解析(1)一C4.5演算法

姓名:崔升    學號:14020120005

【嵌牛導讀】:

C4.5作為一種經典的處理大數據的演算法,是我們在學習互聯網大數據時不得不去了解的一種常用演算法

【嵌牛鼻子】:經典大數據演算法之C4.5簡單介紹

【嵌牛提問】:C4.5是一種怎麼的演算法,其決策機制靠什麼實現?

【嵌牛正文】:

決策樹模型:

決策樹是一種通過對特徵屬性的分類對樣本進行分類的樹形結構,包括有向邊與三類節點:

根節點(root node),表示第一個特徵屬性,只有出邊沒有入邊;

內部節點(internal node),表示特徵屬性,有一條入邊至少兩條出邊

葉子節點(leaf node),表示類別,只有一條入邊沒有出邊。

上圖給出了(二叉)決策樹的示例。決策樹具有以下特點:

對於二叉決策樹而言,可以看作是if-then規則集合,由決策樹的根節點到葉子節點對應於一條分類規則;

分類規則是 互斥並且完備 的,所謂 互斥 即每一條樣本記錄不會同時匹配上兩條分類規則,所謂 完備 即每條樣本記錄都在決策樹中都能匹配上一條規則。

分類的本質是對特徵空間的劃分,如下圖所示,

決策樹學習:

決策樹學習的本質是從訓練數據集中歸納出一組分類規則[2]。但隨著分裂屬性次序的不同,所得到的決策樹也會不同。如何得到一棵決策樹既對訓練數據有較好的擬合,又對未知數據有很好的預測呢?

首先,我們要解決兩個問題:

如何選擇較優的特徵屬性進行分裂?每一次特徵屬性的分裂,相當於對訓練數據集進行再劃分,對應於一次決策樹的生長。ID3演算法定義了目標函數來進行特徵選擇。

什麼時候應該停止分裂?有兩種自然情況應該停止分裂,一是該節點對應的所有樣本記錄均屬於同一類別,二是該節點對應的所有樣本的特徵屬性值均相等。但除此之外,是不是還應該其他情況停止分裂呢?

2. 決策樹演算法

特徵選擇

特徵選擇指選擇最大化所定義目標函數的特徵。下面給出如下三種特徵(Gender, Car Type, Customer ID)分裂的例子:

圖中有兩類類別(C0, C1),C0: 6是對C0類別的計數。直觀上,應選擇Car Type特徵進行分裂,因為其類別的分布概率具有更大的傾斜程度,類別不確定程度更小。

為了衡量類別分布概率的傾斜程度,定義決策樹節點tt的不純度(impurity),其滿足:不純度越小,則類別的分布概率越傾斜;下面給出不純度的的三種度量:

其中,p(ck|t)p(ck|t)表示對於決策樹節點tt類別ckck的概率。這三種不純度的度量是等價的,在等概率分布是達到最大值。

為了判斷分裂前後節點不純度的變化情況,目標函數定義為信息增益(information gain):

I(⋅)I(⋅)對應於決策樹節點的不純度,parentparent表示分裂前的父節點,NN表示父節點所包含的樣本記錄數,aiai表示父節點分裂後的某子節點,N(ai)N(ai)為其計數,nn為分裂後的子節點數。

特別地,ID3演算法選取 熵值 作為不純度I(⋅)I(⋅)的度量,則

cc指父節點對應所有樣本記錄的類別;AA表示選擇的特徵屬性,即aiai的集合。那麼,決策樹學習中的信息增益ΔΔ等價於訓練數據集中 類與特徵的互信息 ,表示由於得知特徵AA的信息訓練數據集cc不確定性減少的程度。

在特徵分裂後,有些子節點的記錄數可能偏少,以至於影響分類結果。為了解決這個問題,CART演算法提出了只進行特徵的二元分裂,即決策樹是一棵二叉樹;C4.5演算法改進分裂目標函數,用信息增益比(information gain ratio)來選擇特徵:

因而,特徵選擇的過程等同於計算每個特徵的信息增益,選擇最大信息增益的特徵進行分裂。此即回答前面所提出的第一個問題(選擇較優特徵)。ID3演算法設定一閾值,當最大信息增益小於閾值時,認為沒有找到有較優分類能力的特徵,沒有往下繼續分裂的必要。根據最大表決原則,將最多計數的類別作為此葉子節點。即回答前面所提出的第二個問題(停止分裂條件)。

決策樹生成:

ID3演算法的核心是根據信息增益最大的准則,遞歸地構造決策樹;演算法流程如下:

如果節點滿足停止分裂條件(所有記錄屬同一類別 or 最大信息增益小於閾值),將其置為葉子節點;

選擇信息增益最大的特徵進行分裂;

重復步驟1-2,直至分類完成。

C4.5演算法流程與ID3相類似,只不過將信息增益改為 信息增益比 。

3. 決策樹剪枝

過擬合

生成的決策樹對訓練數據會有很好的分類效果,卻可能對未知數據的預測不準確,即決策樹模型發生過擬合(overfitting)——訓練誤差(training error)很小、泛化誤差(generalization error,亦可看作為test error)較大。下圖給出訓練誤差、測試誤差(test error)隨決策樹節點數的變化情況:

可以觀察到,當節點數較小時,訓練誤差與測試誤差均較大,即發生了欠擬合(underfitting)。當節點數較大時,訓練誤差較小,測試誤差卻很大,即發生了過擬合。只有當節點數適中是,訓練誤差居中,測試誤差較小;對訓練數據有較好的擬合,同時對未知數據有很好的分類准確率。

發生過擬合的根本原因是分類模型過於復雜,可能的原因如下:

訓練數據集中有噪音樣本點,對訓練數據擬合的同時也對噪音進行擬合,從而影響了分類的效果;

決策樹的葉子節點中缺乏有分類價值的樣本記錄,也就是說此葉子節點應被剪掉。

剪枝策略

為了解決過擬合,C4.5通過剪枝以減少模型的復雜度。[2]中提出一種簡單剪枝策略,通過極小化決策樹的整體損失函數(loss function)或代價函數(cost function)來實現,決策樹TT的損失函數為:

其中,C(T)C(T)表示決策樹的訓練誤差,αα為調節參數,|T||T|為模型的復雜度。當模型越復雜時,訓練的誤差就越小。上述定義的損失正好做了兩者之間的權衡。

如果剪枝後損失函數減少了,即說明這是有效剪枝。具體剪枝演算法可以由動態規劃等來實現。

4. 參考資料

[1] Pang-Ning Tan, Michael Steinbach, Vipin Kumar, Introction to Data Mining .

[2] 李航,《統計學習方法》.

[3] Naren Ramakrishnan, The Top Ten Algorithms in Data Mining.

⑥ 大數據技術包括哪些

大數據技術包括數據收集、數據存取、基礎架構、數據處理、統計分析、數據挖掘、模型預測、結果呈現。

1、數據收集:在大數據的生命周期中,數據採集處於第一個環節。根據MapRece產生數據的應用系統分類,大數據的採集主要有4種來源:管理信息系統、Web信息系統、物理信息系統、科學實驗系統。

2、數據存取:大數據的存去採用不同的技術路線,大致可以分為3類。第1類主要面對的是大規模的結構化數據。第2類主要面對的是半結構化和非結構化數據。第3類面對的是結構化和非結構化混合的大數據,

3、基礎架構:雲存儲、分布式文件存儲等。

4、數據處理:對於採集到的不同的數據集,可能存在不同的結構和模式,如文件、XML 樹、關系表等,表現為數據的異構性。對多個異構的數據集,需要做進一步集成處理或整合處理,將來自不同數據集的數據收集、整理、清洗、轉換後,生成到一個新的數據集,為後續查詢和分析處理提供統一的數據視圖。

5、統計分析:假設檢驗、顯著性檢驗、差異分析、相關分析、T檢驗、方差分析、卡方分析、偏相關分析、距離分析、回歸分析、簡單回歸分析、多元回歸分析、逐步回歸、回歸預測與殘差分析、嶺回歸、logistic回歸分析、曲線估計、因子分析、聚類分析、主成分分析、因子分析、快速聚類法與聚類法、判別分析、對應分析、多元對應分析(最優尺度分析)、bootstrap技術等等。

6、數據挖掘:目前,還需要改進已有數據挖掘和機器學習技術;開發數據網路挖掘、特異群組挖掘、圖挖掘等新型數據挖掘技術;突破基於對象的數據連接、相似性連接等大數據融合技術;突破用戶興趣分析、網路行為分析、情感語義分析等面向領域的大數據挖掘技術。

7、模型預測:預測模型、機器學習、建模模擬。

8、結果呈現:雲計算、標簽雲、關系圖等。

⑦ 以下哪些屬於大數據特徵

大數據(big
data),是指無法復在可承受的制時間范圍內用常規軟體工具進行捕捉、管理和處理的數據集合。它的4個基本特徵分別為:
1.
數據量大,TB,PB,乃至EB等數據量的數據需要分析處理。
2.
要求快速響應,市場變化快,要求能及時快速的響應變化,那對數據的分析也要快速,在性能上有更高要求,所以數據量顯得對速度要求有些「大」。
3.
數據多樣性:不同的數據源,非結構化數據越來越多,需要進行清洗,整理,篩選等操作,變為結構數據。
4.
價值密度低,由於數據採集的不及時,數據樣本不全面,數據可能不連續等等,數據可能會失真,但當數據量達到一定規模,可以通過更多的數據達到更真實全面的反饋。

⑧ c語言處理文件里的大數據

只能分塊處理了,讀入一塊、處理一塊、存儲一塊,資料庫就是這么乾的。

閱讀全文

與c大數據四則相關的資料

熱點內容
pdf文件無法列印其他正常 瀏覽:126
拍照文件掃描轉換word 瀏覽:724
電腦啟動後桌面文件不見了 瀏覽:535
圖文游戲編程作品說明如何寫 瀏覽:197
qq瀏覽器wifi不安全衛士 瀏覽:449
文件在用戶卻不顯示在桌面 瀏覽:124
delphi獲取操作系統版本 瀏覽:722
linux定時任務執行腳本 瀏覽:787
招商銀行app怎麼查電費 瀏覽:739
手機代碼文檔翻譯軟體 瀏覽:676
青華模具學院和ug編程哪個好 瀏覽:736
怎麼改網站關鍵詞 瀏覽:581
怎麼把ps圖片保存成雕刻文件 瀏覽:771
java字元串賦空值不賦值null 瀏覽:556
什麼是文件hash 瀏覽:345
文件碎片微信小程序 瀏覽:878
蘋果手機怎麼升級運營商版本 瀏覽:100
什麼是菜鳥網路服務協議 瀏覽:260
11月份的銷售數據是什麼 瀏覽:439
三個數據如何列表格 瀏覽:92

友情鏈接