国内精品久久久久_亚洲区手机在线中文无码播放_国内精品久久久久影院一蜜桃_日韩内射激情视频在线播放免费

      手寫代碼什么意思?

      時(shí)間:2024-11-19 07:32 人氣:0 編輯:招聘街

      一、手寫代碼什么意思?

      手寫代碼的意思就是指完全脫離計(jì)算機(jī),用筆紙進(jìn)行編碼。用文本(記事本)直接寫代碼

      而DW是一個(gè)輔助作用,寫代碼時(shí)可以進(jìn)行代碼提示,一般熟手都不需要DW,直接用記事本寫。

      手寫代碼,最能體現(xiàn)一個(gè)人的能力

      如果一個(gè)求職者能當(dāng)場寫出代碼,并得到正確的結(jié)果,那么,他對代碼、算法的臨場應(yīng)變能力還是很強(qiáng)的,在平時(shí)工作中,效率也是有保障的。

      很多人對程序員有誤區(qū),認(rèn)為他們寫代碼的時(shí)候,就應(yīng)該像影視劇中的黑客一樣,噼里啪啦敲一陣鍵盤,顯示屏不斷的滾動(dòng)刷新黑底白字的英文,就能迅速得到想要的結(jié)果。

      二、手寫數(shù)字體識別算法代碼

      手寫數(shù)字體識別是計(jì)算機(jī)視覺領(lǐng)域的一個(gè)重要任務(wù),它涉及將手寫數(shù)字輸入的圖像轉(zhuǎn)換成可識別的數(shù)字。為了實(shí)現(xiàn)這個(gè)功能,算法是不可或缺的。以下是一個(gè)示例代碼,展示了一個(gè)簡單的手寫數(shù)字體識別算法。

      算法實(shí)現(xiàn)

      首先,我們需要準(zhǔn)備一個(gè)手寫數(shù)字體的數(shù)據(jù)集。從MNIST數(shù)據(jù)庫中獲取的數(shù)據(jù)集是非常適合這個(gè)任務(wù)的。該數(shù)據(jù)集包含了大量手寫數(shù)字圖片及其對應(yīng)的標(biāo)簽。我們可以將數(shù)據(jù)集分為訓(xùn)練集和測試集,用訓(xùn)練集構(gòu)建模型,然后使用測試集評估模型的性能。

      接下來,我們需要導(dǎo)入所需的庫:

      import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.model_selection import train_test_split from sklearn.svm import SVC

      然后,我們加載MNIST數(shù)據(jù)集:

      # 從MNIST數(shù)據(jù)集中加載數(shù)據(jù)
      def load_data():
          mnist_data = pd.read_csv('mnist_dataset.csv')
          X = mnist_data.drop(columns=['label']).values
          y = mnist_data['label'].values
          
          # 數(shù)據(jù)歸一化
          X = X / 255.0
          
          return X, y
          
      X, y = load_data()

      數(shù)據(jù)加載完成后,我們可以繼續(xù)將數(shù)據(jù)集劃分為訓(xùn)練集和測試集:

      # 將數(shù)據(jù)集劃分為訓(xùn)練集和測試集
      X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

      接下來,我們可以使用支持向量機(jī)(SVM)作為分類器來訓(xùn)練模型:

      # 創(chuàng)建SVM模型并進(jìn)行訓(xùn)練
      svm_model = SVC()
      svm_model.fit(X_train, y_train)

      模型訓(xùn)練完成后,我們可以使用測試集來評估其性能:

      # 在測試集上評估模型性能
      accuracy = svm_model.score(X_test, y_test)
      print("Accuracy: {:.2f}".format(accuracy))

      以上就是一個(gè)簡單的手寫數(shù)字體識別算法的代碼實(shí)現(xiàn)。通過運(yùn)行這段代碼,我們可以得到模型在測試集上的準(zhǔn)確率。但這只是一個(gè)簡單的示例,實(shí)際的手寫數(shù)字體識別算法可能更加復(fù)雜,需要更多的特征提取和模型優(yōu)化技巧。

      總結(jié)

      手寫數(shù)字體識別算法是一個(gè)常見且重要的任務(wù),可以應(yīng)用于各種應(yīng)用領(lǐng)域,如郵件識別、銀行支票處理等。本文介紹了一個(gè)簡單的手寫數(shù)字體識別算法的代碼實(shí)現(xiàn),以及其在測試集上的性能評估。希望這個(gè)示例能夠幫助讀者對手寫數(shù)字體識別算法有所了解,并為進(jìn)一步的研究和開發(fā)提供參考。

      三、手寫字體識別算法 代碼

      手寫字體識別算法代碼解析

      在如今數(shù)字化的時(shí)代,手寫字體似乎成為了一種越來越少見的技能。然而,對于某些特定的行業(yè)和應(yīng)用來說,手寫字體仍然扮演著重要的角色。比如,在銀行業(yè),客戶的簽名仍然需要手寫。在教育領(lǐng)域,學(xué)生的書寫作業(yè)也需要手寫。在這種情況下,使用手寫字體識別算法來自動(dòng)識別手寫字體就變得非常必要。

      手寫字體識別算法是一種通過計(jì)算機(jī)程序?qū)⑹謱懳谋巨D(zhuǎn)換為可識別的文本的技術(shù)。在這篇文章中,我們將介紹一種常用的手寫字體識別算法,并提供相關(guān)的代碼示例。

      算法原理

      手寫字體識別算法的原理可以簡單概括為以下幾個(gè)步驟:

      1. 數(shù)據(jù)采集:首先,需要收集一批手寫字體的樣本數(shù)據(jù)。這些樣本數(shù)據(jù)可以來自于已有的手寫字體數(shù)據(jù)庫,也可以通過人工采集。
      2. 特征提取:接下來,從采集到的手寫字體樣本中提取特征。常用的特征提取方法包括傅里葉變換、小波變換等。
      3. 模型訓(xùn)練:將提取到的特征作為輸入,建立手寫字體識別模型。常用的模型包括支持向量機(jī)、深度神經(jīng)網(wǎng)絡(luò)等。
      4. 測試與評估:使用已有的手寫字體樣本對訓(xùn)練好的模型進(jìn)行測試和評估,以評估算法的準(zhǔn)確性和魯棒性。

      通過以上步驟,我們可以得到一個(gè)能夠?qū)κ謱懽煮w進(jìn)行識別的算法模型。

      示例代碼

      下面是一段使用Python編寫的手寫字體識別算法代碼示例:

      # 導(dǎo)入所需的庫 import numpy as np from sklearn import svm from sklearn.model_selection import train_test_split # 加載手寫字體數(shù)據(jù)集 data = np.load('handwriting_dataset.npy') labels = np.load('handwriting_labels.npy') # 劃分訓(xùn)練集和測試集 X_train, X_test, y_train, y_test = train_test_split(data, labels, test_size=0.2, random_state=42) # 創(chuàng)建支持向量機(jī)分類器 clf = svm.SVC() # 訓(xùn)練模型 clf.fit(X_train, y_train) # 測試模型 accuracy = clf.score(X_test, y_test) print("準(zhǔn)確率:", accuracy)

      上述代碼示例使用了scikit-learn庫中的支持向量機(jī)分類器來建立手寫字體識別模型。首先,我們通過numpy庫加載手寫字體數(shù)據(jù)集和對應(yīng)的標(biāo)簽。然后,使用train_test_split函數(shù)將數(shù)據(jù)集劃分為訓(xùn)練集和測試集。接下來,創(chuàng)建一個(gè)支持向量機(jī)分類器,并使用fit函數(shù)對模型進(jìn)行訓(xùn)練。最后,通過score函數(shù)計(jì)算模型在測試集上的準(zhǔn)確率。

      總結(jié)

      手寫字體識別算法是一項(xiàng)復(fù)雜而又有趣的技術(shù)。通過特征提取和模型訓(xùn)練,我們可以將手寫字體轉(zhuǎn)換為計(jì)算機(jī)可識別的文本。本文介紹了手寫字體識別算法的基本原理,并提供了一段使用支持向量機(jī)分類器的示例代碼。希望這篇文章能夠?qū)ψx者理解手寫字體識別算法有所幫助。

      四、圖片手寫字體識別代碼

      圖片手寫字體識別代碼是一種非常有趣且具有挑戰(zhàn)性的技術(shù)。通過這種技術(shù),計(jì)算機(jī)可以識別并理解手寫字體的圖片,這對于許多應(yīng)用程序和行業(yè)都具有重大意義。在本文中,我們將探討圖片手寫字體識別代碼的工作原理、應(yīng)用領(lǐng)域以及未來發(fā)展方向等內(nèi)容。

      工作原理

      圖片手寫字體識別代碼的工作原理主要包括以下幾個(gè)步驟:首先,通過圖像處理技術(shù)對手寫字體圖片進(jìn)行預(yù)處理,包括灰度化、二值化等操作,以便計(jì)算機(jī)能夠更好地識別圖像中的文字信息;然后,利用深度學(xué)習(xí)模型,如卷積神經(jīng)網(wǎng)絡(luò)(CNN)或循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN),對處理后的圖片進(jìn)行特征提取和學(xué)習(xí),從而實(shí)現(xiàn)對手寫字體的識別和理解;最后,根據(jù)識別結(jié)果輸出文字信息或進(jìn)行進(jìn)一步的處理。

      從技術(shù)角度來看,圖片手寫字體識別代碼涉及圖像處理、模式識別、深度學(xué)習(xí)等多個(gè)領(lǐng)域的知識,需要綜合運(yùn)用各種算法和技術(shù)手段才能取得較好的識別效果。隨著人工智能技術(shù)的不斷發(fā)展和深化,圖片手寫字體識別的準(zhǔn)確率和效率也在不斷提高。

      應(yīng)用領(lǐng)域

      圖片手寫字體識別代碼在現(xiàn)實(shí)生活中有著廣泛的應(yīng)用,其中包括但不限于以下幾個(gè)方面:

      • 文檔識別:將手寫文檔或簽名轉(zhuǎn)換為電子文本,便于存儲和檢索。
      • 自動(dòng)化辦公:實(shí)現(xiàn)對手寫便簽、便箋等內(nèi)容的自動(dòng)識別和處理,提高辦公效率。
      • 銀行金融:用于支票識別、簽名驗(yàn)證等金融領(lǐng)域的安全認(rèn)證。
      • 教育培訓(xùn):幫助教育機(jī)構(gòu)評估學(xué)生的手寫水平、批改作業(yè)等。

      可以說,圖片手寫字體識別代碼在提高工作效率、減少人力資源成本、提升服務(wù)質(zhì)量等方面具有巨大的潛力和市場需求。

      未來發(fā)展方向

      隨著人工智能技術(shù)的不斷成熟和應(yīng)用場景的不斷擴(kuò)展,圖片手寫字體識別代碼也在不斷發(fā)展和完善。未來,我們可以期待以下幾個(gè)方面的發(fā)展:

      • 多模態(tài)融合:結(jié)合圖像、文本、語音等多種模態(tài)信息,進(jìn)一步提升識別準(zhǔn)確率。
      • 跨領(lǐng)域應(yīng)用:將手寫字體識別技術(shù)應(yīng)用于更多行業(yè)和場景,如醫(yī)療健康、司法公安等。
      • 個(gè)性化定制:根據(jù)用戶需求提供個(gè)性化的識別方案,滿足不同用戶的需求和定制要求。
      • 邊緣計(jì)算:將識別模型部署到邊緣設(shè)備,實(shí)現(xiàn)實(shí)時(shí)識別和低延遲處理。

      總的來說,圖片手寫字體識別代碼作為人工智能領(lǐng)域的一個(gè)重要應(yīng)用方向,將在未來發(fā)展中發(fā)揮越來越重要的作用,為社會生產(chǎn)生活帶來更多便利和創(chuàng)新。

      五、c語言手寫代碼空格怎么表示?

      c語言空格用“ ”,中間空一格。

      六、php大廠筆試需要手寫代碼嗎?

      php大廠筆試需要手寫代碼。

      因?yàn)樵诖髲S里面有工作經(jīng)驗(yàn)的,或者是面試的,一般都是需要經(jīng)過筆試的,他們不僅僅是需要考試你的技術(shù)能力還需要你對程序代碼的基礎(chǔ)理解知識的,所以一般都是有筆試的,重點(diǎn)看重的是你的基礎(chǔ)能力和原理的實(shí)現(xiàn)。

      七、如何高效備戰(zhàn)Python編程面試?手寫Python面試題必備

      為什么要準(zhǔn)備Python面試題?

      隨著Python在各個(gè)領(lǐng)域的廣泛應(yīng)用,越來越多的公司開始注重Python編程技能。在面試過程中,手寫Python面試題已成為考察候選人技能水平的重要環(huán)節(jié)。為了在面試中脫穎而出,備戰(zhàn)Python面試題至關(guān)重要。

      Python面試題備戰(zhàn)方法

      深入理解Python基礎(chǔ)知識: 熟練掌握Python的基本語法、數(shù)據(jù)類型、控制流程等知識,對面試題至關(guān)重要。

      掌握常見的數(shù)據(jù)結(jié)構(gòu)和算法: 如列表、字典、集合等數(shù)據(jù)結(jié)構(gòu),以及搜索、排序等常見算法。在面試中,能夠靈活運(yùn)用這些知識解決問題將會給面試官留下深刻印象。

      實(shí)踐、實(shí)踐再實(shí)踐: 通過刷題、練習(xí),將知識轉(zhuǎn)化為應(yīng)用能力。這樣可以更好地理解和掌握Python的各種特性和技巧。

      手寫Python面試題的重要性

      在面試中手寫Python面試題可以更好地考察面試者的編程基本功、編碼能力和解決問題的能力。這種形式的面試更加接近實(shí)際工作中的需求,以及面試者的實(shí)際水平。

      如何高效備戰(zhàn)Python面試題

      系統(tǒng)學(xué)習(xí)Python基礎(chǔ)知識: 從Python的基本語法、數(shù)據(jù)類型、控制流程等方面系統(tǒng)學(xué)習(xí),打好基礎(chǔ)。

      掌握Python常見的編程題型: 包括但不限于數(shù)據(jù)結(jié)構(gòu)、算法、字符串處理、面向?qū)ο蟮阮}型,熟練掌握解題思路。

      多做手寫練習(xí): 通過手寫代碼進(jìn)行練習(xí),可以更好地理解和掌握各種題目的解題方法,提高編程能力和熟練度。

      參加模擬面試: 可以通過面試模擬來檢驗(yàn)自己的準(zhǔn)備情況,發(fā)現(xiàn)不足之處,并及時(shí)調(diào)整備戰(zhàn)策略。

      結(jié)語

      Python作為一門易學(xué)且功能強(qiáng)大的編程語言,備戰(zhàn)Python面試題需要投入足夠的時(shí)間和精力。通過系統(tǒng)學(xué)習(xí)基礎(chǔ)知識、掌握常見題型的解題方法并進(jìn)行實(shí)踐和練習(xí),相信你一定能夠在面試中脫穎而出。

      八、最新研究:手寫字體識別算法與代碼解析

      手寫字體識別是一項(xiàng)在計(jì)算機(jī)視覺領(lǐng)域中具有重要意義的任務(wù)。它的應(yīng)用范圍廣泛,包括自動(dòng)化系統(tǒng)、文檔處理、人機(jī)交互等領(lǐng)域。本文將詳細(xì)介紹最新的手寫字體識別算法及其對應(yīng)的代碼實(shí)現(xiàn)。

      手寫字體識別算法概述

      手寫字體識別算法是指通過對手寫字體的特征提取和模式識別技術(shù),對手寫文本進(jìn)行自動(dòng)識別的算法。目前,主要的手寫字體識別算法包括基于傳統(tǒng)機(jī)器學(xué)習(xí)的方法和基于深度學(xué)習(xí)的方法。

      基于傳統(tǒng)機(jī)器學(xué)習(xí)的手寫字體識別算法

      傳統(tǒng)的手寫字體識別算法主要包括以下幾個(gè)步驟:

      1. 預(yù)處理:對手寫文本進(jìn)行二值化處理、噪聲去除等操作,以提高樣本的質(zhì)量。
      2. 特征提取:從處理后的樣本中提取特征,常用的特征包括灰度直方圖、梯度直方圖、Zernike矩等。
      3. 特征選擇:根據(jù)提取的特征進(jìn)行篩選,選擇最具有代表性和區(qū)分度的特征。
      4. 分類器訓(xùn)練:使用分類算法(如支持向量機(jī)、隨機(jī)森林等)對選定特征進(jìn)行訓(xùn)練,生成識別模型。
      5. 分類:對新的手寫文本樣本進(jìn)行分類,將其歸為相應(yīng)的字體類別。

      基于深度學(xué)習(xí)的手寫字體識別算法

      深度學(xué)習(xí)是近年來在圖像識別領(lǐng)域取得顯著成果的方法之一,也被廣泛應(yīng)用于手寫字體識別任務(wù)中。常用的深度學(xué)習(xí)模型包括卷積神經(jīng)網(wǎng)絡(luò)(CNN)和循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)。

      基于深度學(xué)習(xí)的手寫字體識別算法通常包括以下幾個(gè)步驟:

      1. 數(shù)據(jù)準(zhǔn)備:構(gòu)建手寫字體識別數(shù)據(jù)集,并進(jìn)行數(shù)據(jù)預(yù)處理,如圖像增強(qiáng)、標(biāo)準(zhǔn)化等。
      2. 特征提取:使用深度學(xué)習(xí)模型對手寫樣本進(jìn)行特征提取和表示學(xué)習(xí),通過卷積和池化層提取圖像的局部特征。
      3. 特征選擇:通過降維方法(如主成分分析等)對提取的特征進(jìn)行篩選和壓縮。
      4. 分類器訓(xùn)練:使用深度學(xué)習(xí)模型對選定特征進(jìn)行訓(xùn)練,學(xué)習(xí)樣本的特征分布和類別信息。
      5. 分類:對新的手寫文本樣本進(jìn)行分類預(yù)測,得到對應(yīng)的字體類別。

      手寫字體識別代碼實(shí)現(xiàn)

      在開源社區(qū)和學(xué)術(shù)界中,有許多優(yōu)秀的手寫字體識別代碼可供使用。常用的深度學(xué)習(xí)框架如TensorFlow、PyTorch、Keras等都提供了相關(guān)的示例代碼和預(yù)訓(xùn)練模型。

      以TensorFlow為例,使用TensorFlow可以通過搭建卷積神經(jīng)網(wǎng)絡(luò)模型并進(jìn)行訓(xùn)練,實(shí)現(xiàn)手寫字體識別。具體的代碼實(shí)現(xiàn)可以參考TensorFlow官方文檔和相關(guān)的開源項(xiàng)目。

      總結(jié)

      手寫字體識別算法是一項(xiàng)具有挑戰(zhàn)性和實(shí)用價(jià)值的任務(wù),它在自動(dòng)化系統(tǒng)、文檔處理、人機(jī)交互等領(lǐng)域有著廣泛的應(yīng)用前景。本文介紹了手寫字體識別的基本算法原理,并提供了基于傳統(tǒng)機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的手寫字體識別代碼實(shí)現(xiàn)。

      感謝您閱讀本文,希望通過本文的閱讀,能夠幫助您了解手寫字體識別算法及其代碼實(shí)現(xiàn),進(jìn)一步提升相關(guān)技能。

      九、新手寫的一個(gè)html代碼報(bào)404?

      404錯(cuò)誤是找不到路徑,或者服務(wù)器做了些屏蔽抓取的功能,缺少某些文件頭信息不給訪問

      十、mahout面試題?

      之前看了Mahout官方示例 20news 的調(diào)用實(shí)現(xiàn);于是想根據(jù)示例的流程實(shí)現(xiàn)其他例子。網(wǎng)上看到了一個(gè)關(guān)于天氣適不適合打羽毛球的例子。

      訓(xùn)練數(shù)據(jù):

      Day Outlook Temperature Humidity Wind PlayTennis

      D1 Sunny Hot High Weak No

      D2 Sunny Hot High Strong No

      D3 Overcast Hot High Weak Yes

      D4 Rain Mild High Weak Yes

      D5 Rain Cool Normal Weak Yes

      D6 Rain Cool Normal Strong No

      D7 Overcast Cool Normal Strong Yes

      D8 Sunny Mild High Weak No

      D9 Sunny Cool Normal Weak Yes

      D10 Rain Mild Normal Weak Yes

      D11 Sunny Mild Normal Strong Yes

      D12 Overcast Mild High Strong Yes

      D13 Overcast Hot Normal Weak Yes

      D14 Rain Mild High Strong No

      檢測數(shù)據(jù):

      sunny,hot,high,weak

      結(jié)果:

      Yes=》 0.007039

      No=》 0.027418

      于是使用Java代碼調(diào)用Mahout的工具類實(shí)現(xiàn)分類。

      基本思想:

      1. 構(gòu)造分類數(shù)據(jù)。

      2. 使用Mahout工具類進(jìn)行訓(xùn)練,得到訓(xùn)練模型。

      3。將要檢測數(shù)據(jù)轉(zhuǎn)換成vector數(shù)據(jù)。

      4. 分類器對vector數(shù)據(jù)進(jìn)行分類。

      接下來貼下我的代碼實(shí)現(xiàn)=》

      1. 構(gòu)造分類數(shù)據(jù):

      在hdfs主要?jiǎng)?chuàng)建一個(gè)文件夾路徑 /zhoujainfeng/playtennis/input 并將分類文件夾 no 和 yes 的數(shù)據(jù)傳到hdfs上面。

      數(shù)據(jù)文件格式,如D1文件內(nèi)容: Sunny Hot High Weak

      2. 使用Mahout工具類進(jìn)行訓(xùn)練,得到訓(xùn)練模型。

      3。將要檢測數(shù)據(jù)轉(zhuǎn)換成vector數(shù)據(jù)。

      4. 分類器對vector數(shù)據(jù)進(jìn)行分類。

      這三步,代碼我就一次全貼出來;主要是兩個(gè)類 PlayTennis1 和 BayesCheckData = =》

      package myTesting.bayes;

      import org.apache.hadoop.conf.Configuration;

      import org.apache.hadoop.fs.FileSystem;

      import org.apache.hadoop.fs.Path;

      import org.apache.hadoop.util.ToolRunner;

      import org.apache.mahout.classifier.naivebayes.training.TrainNaiveBayesJob;

      import org.apache.mahout.text.SequenceFilesFromDirectory;

      import org.apache.mahout.vectorizer.SparseVectorsFromSequenceFiles;

      public class PlayTennis1 {

      private static final String WORK_DIR = "hdfs://192.168.9.72:9000/zhoujianfeng/playtennis";

      /*

      * 測試代碼

      */

      public static void main(String[] args) {

      //將訓(xùn)練數(shù)據(jù)轉(zhuǎn)換成 vector數(shù)據(jù)

      makeTrainVector();

      //產(chǎn)生訓(xùn)練模型

      makeModel(false);

      //測試檢測數(shù)據(jù)

      BayesCheckData.printResult();

      }

      public static void makeCheckVector(){

      //將測試數(shù)據(jù)轉(zhuǎn)換成序列化文件

      try {

      Configuration conf = new Configuration();

      conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));

      String input = WORK_DIR+Path.SEPARATOR+"testinput";

      String output = WORK_DIR+Path.SEPARATOR+"tennis-test-seq";

      Path in = new Path(input);

      Path out = new Path(output);

      FileSystem fs = FileSystem.get(conf);

      if(fs.exists(in)){

      if(fs.exists(out)){

      //boolean參數(shù)是,是否遞歸刪除的意思

      fs.delete(out, true);

      }

      SequenceFilesFromDirectory sffd = new SequenceFilesFromDirectory();

      String[] params = new String[]{"-i",input,"-o",output,"-ow"};

      ToolRunner.run(sffd, params);

      }

      } catch (Exception e) {

      // TODO Auto-generated catch block

      e.printStackTrace();

      System.out.println("文件序列化失敗!");

      System.exit(1);

      }

      //將序列化文件轉(zhuǎn)換成向量文件

      try {

      Configuration conf = new Configuration();

      conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));

      String input = WORK_DIR+Path.SEPARATOR+"tennis-test-seq";

      String output = WORK_DIR+Path.SEPARATOR+"tennis-test-vectors";

      Path in = new Path(input);

      Path out = new Path(output);

      FileSystem fs = FileSystem.get(conf);

      if(fs.exists(in)){

      if(fs.exists(out)){

      //boolean參數(shù)是,是否遞歸刪除的意思

      fs.delete(out, true);

      }

      SparseVectorsFromSequenceFiles svfsf = new SparseVectorsFromSequenceFiles();

      String[] params = new String[]{"-i",input,"-o",output,"-lnorm","-nv","-wt","tfidf"};

      ToolRunner.run(svfsf, params);

      }

      } catch (Exception e) {

      // TODO Auto-generated catch block

      e.printStackTrace();

      System.out.println("序列化文件轉(zhuǎn)換成向量失敗!");

      System.out.println(2);

      }

      }

      public static void makeTrainVector(){

      //將測試數(shù)據(jù)轉(zhuǎn)換成序列化文件

      try {

      Configuration conf = new Configuration();

      conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));

      String input = WORK_DIR+Path.SEPARATOR+"input";

      String output = WORK_DIR+Path.SEPARATOR+"tennis-seq";

      Path in = new Path(input);

      Path out = new Path(output);

      FileSystem fs = FileSystem.get(conf);

      if(fs.exists(in)){

      if(fs.exists(out)){

      //boolean參數(shù)是,是否遞歸刪除的意思

      fs.delete(out, true);

      }

      SequenceFilesFromDirectory sffd = new SequenceFilesFromDirectory();

      String[] params = new String[]{"-i",input,"-o",output,"-ow"};

      ToolRunner.run(sffd, params);

      }

      } catch (Exception e) {

      // TODO Auto-generated catch block

      e.printStackTrace();

      System.out.println("文件序列化失敗!");

      System.exit(1);

      }

      //將序列化文件轉(zhuǎn)換成向量文件

      try {

      Configuration conf = new Configuration();

      conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));

      String input = WORK_DIR+Path.SEPARATOR+"tennis-seq";

      String output = WORK_DIR+Path.SEPARATOR+"tennis-vectors";

      Path in = new Path(input);

      Path out = new Path(output);

      FileSystem fs = FileSystem.get(conf);

      if(fs.exists(in)){

      if(fs.exists(out)){

      //boolean參數(shù)是,是否遞歸刪除的意思

      fs.delete(out, true);

      }

      SparseVectorsFromSequenceFiles svfsf = new SparseVectorsFromSequenceFiles();

      String[] params = new String[]{"-i",input,"-o",output,"-lnorm","-nv","-wt","tfidf"};

      ToolRunner.run(svfsf, params);

      }

      } catch (Exception e) {

      // TODO Auto-generated catch block

      e.printStackTrace();

      System.out.println("序列化文件轉(zhuǎn)換成向量失敗!");

      System.out.println(2);

      }

      }

      public static void makeModel(boolean completelyNB){

      try {

      Configuration conf = new Configuration();

      conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));

      String input = WORK_DIR+Path.SEPARATOR+"tennis-vectors"+Path.SEPARATOR+"tfidf-vectors";

      String model = WORK_DIR+Path.SEPARATOR+"model";

      String labelindex = WORK_DIR+Path.SEPARATOR+"labelindex";

      Path in = new Path(input);

      Path out = new Path(model);

      Path label = new Path(labelindex);

      FileSystem fs = FileSystem.get(conf);

      if(fs.exists(in)){

      if(fs.exists(out)){

      //boolean參數(shù)是,是否遞歸刪除的意思

      fs.delete(out, true);

      }

      if(fs.exists(label)){

      //boolean參數(shù)是,是否遞歸刪除的意思

      fs.delete(label, true);

      }

      TrainNaiveBayesJob tnbj = new TrainNaiveBayesJob();

      String[] params =null;

      if(completelyNB){

      params = new String[]{"-i",input,"-el","-o",model,"-li",labelindex,"-ow","-c"};

      }else{

      params = new String[]{"-i",input,"-el","-o",model,"-li",labelindex,"-ow"};

      }

      ToolRunner.run(tnbj, params);

      }

      } catch (Exception e) {

      // TODO Auto-generated catch block

      e.printStackTrace();

      System.out.println("生成訓(xùn)練模型失敗!");

      System.exit(3);

      }

      }

      }

      package myTesting.bayes;

      import java.io.IOException;

      import java.util.HashMap;

      import java.util.Map;

      import org.apache.commons.lang.StringUtils;

      import org.apache.hadoop.conf.Configuration;

      import org.apache.hadoop.fs.Path;

      import org.apache.hadoop.fs.PathFilter;

      import org.apache.hadoop.io.IntWritable;

      import org.apache.hadoop.io.LongWritable;

      import org.apache.hadoop.io.Text;

      import org.apache.mahout.classifier.naivebayes.BayesUtils;

      import org.apache.mahout.classifier.naivebayes.NaiveBayesModel;

      import org.apache.mahout.classifier.naivebayes.StandardNaiveBayesClassifier;

      import org.apache.mahout.common.Pair;

      import org.apache.mahout.common.iterator.sequencefile.PathType;

      import org.apache.mahout.common.iterator.sequencefile.SequenceFileDirIterable;

      import org.apache.mahout.math.RandomAccessSparseVector;

      import org.apache.mahout.math.Vector;

      import org.apache.mahout.math.Vector.Element;

      import org.apache.mahout.vectorizer.TFIDF;

      import com.google.common.collect.ConcurrentHashMultiset;

      import com.google.common.collect.Multiset;

      public class BayesCheckData {

      private static StandardNaiveBayesClassifier classifier;

      private static Map<String, Integer> dictionary;

      private static Map<Integer, Long> documentFrequency;

      private static Map<Integer, String> labelIndex;

      public void init(Configuration conf){

      try {

      String modelPath = "/zhoujianfeng/playtennis/model";

      String dictionaryPath = "/zhoujianfeng/playtennis/tennis-vectors/dictionary.file-0";

      String documentFrequencyPath = "/zhoujianfeng/playtennis/tennis-vectors/df-count";

      String labelIndexPath = "/zhoujianfeng/playtennis/labelindex";

      dictionary = readDictionnary(conf, new Path(dictionaryPath));

      documentFrequency = readDocumentFrequency(conf, new Path(documentFrequencyPath));

      labelIndex = BayesUtils.readLabelIndex(conf, new Path(labelIndexPath));

      NaiveBayesModel model = NaiveBayesModel.materialize(new Path(modelPath), conf);

      classifier = new StandardNaiveBayesClassifier(model);

      } catch (IOException e) {

      // TODO Auto-generated catch block

      e.printStackTrace();

      System.out.println("檢測數(shù)據(jù)構(gòu)造成vectors初始化時(shí)報(bào)錯(cuò)。。。。");

      System.exit(4);

      }

      }

      /**

      * 加載字典文件,Key: TermValue; Value:TermID

      * @param conf

      * @param dictionnaryDir

      * @return

      */

      private static Map<String, Integer> readDictionnary(Configuration conf, Path dictionnaryDir) {

      Map<String, Integer> dictionnary = new HashMap<String, Integer>();

      PathFilter filter = new PathFilter() {

      @Override

      public boolean accept(Path path) {

      String name = path.getName();

      return name.startsWith("dictionary.file");

      }

      };

      for (Pair<Text, IntWritable> pair : new SequenceFileDirIterable<Text, IntWritable>(dictionnaryDir, PathType.LIST, filter, conf)) {

      dictionnary.put(pair.getFirst().toString(), pair.getSecond().get());

      }

      return dictionnary;

      }

      /**

      * 加載df-count目錄下TermDoc頻率文件,Key: TermID; Value:DocFreq

      * @param conf

      * @param dictionnaryDir

      * @return

      */

      private static Map<Integer, Long> readDocumentFrequency(Configuration conf, Path documentFrequencyDir) {

      Map<Integer, Long> documentFrequency = new HashMap<Integer, Long>();

      PathFilter filter = new PathFilter() {

      @Override

      public boolean accept(Path path) {

      return path.getName().startsWith("part-r");

      }

      };

      for (Pair<IntWritable, LongWritable> pair : new SequenceFileDirIterable<IntWritable, LongWritable>(documentFrequencyDir, PathType.LIST, filter, conf)) {

      documentFrequency.put(pair.getFirst().get(), pair.getSecond().get());

      }

      return documentFrequency;

      }

      public static String getCheckResult(){

      Configuration conf = new Configuration();

      conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));

      String classify = "NaN";

      BayesCheckData cdv = new BayesCheckData();

      cdv.init(conf);

      System.out.println("init done...............");

      Vector vector = new RandomAccessSparseVector(10000);

      TFIDF tfidf = new TFIDF();

      //sunny,hot,high,weak

      Multiset<String> words = ConcurrentHashMultiset.create();

      words.add("sunny",1);

      words.add("hot",1);

      words.add("high",1);

      words.add("weak",1);

      int documentCount = documentFrequency.get(-1).intValue(); // key=-1時(shí)表示總文檔數(shù)

      for (Multiset.Entry<String> entry : words.entrySet()) {

      String word = entry.getElement();

      int count = entry.getCount();

      Integer wordId = dictionary.get(word); // 需要從dictionary.file-0文件(tf-vector)下得到wordID,

      if (StringUtils.isEmpty(wordId.toString())){

      continue;

      }

      if (documentFrequency.get(wordId) == null){

      continue;

      }

      Long freq = documentFrequency.get(wordId);

      double tfIdfValue = tfidf.calculate(count, freq.intValue(), 1, documentCount);

      vector.setQuick(wordId, tfIdfValue);

      }

      // 利用貝葉斯算法開始分類,并提取得分最好的分類label

      Vector resultVector = classifier.classifyFull(vector);

      double bestScore = -Double.MAX_VALUE;

      int bestCategoryId = -1;

      for(Element element: resultVector.all()) {

      int categoryId = element.index();

      double score = element.get();

      System.out.println("categoryId:"+categoryId+" score:"+score);

      if (score > bestScore) {

      bestScore = score;

      bestCategoryId = categoryId;

      }

      }

      classify = labelIndex.get(bestCategoryId)+"(categoryId="+bestCategoryId+")";

      return classify;

      }

      public static void printResult(){

      System.out.println("檢測所屬類別是:"+getCheckResult());

      }

      }

      相關(guān)資訊
      熱門頻道

      Copyright © 2024 招聘街 滇ICP備2024020316號-38

      国内精品久久久久_亚洲区手机在线中文无码播放_国内精品久久久久影院一蜜桃_日韩内射激情视频在线播放免费

        洛川县| 汉源县| 博兴县| 新安县| 革吉县| 富源县| 宜城市| 浙江省| 凤山县| 琼中| 夏津县| 太康县| 九寨沟县| 剑阁县| 攀枝花市| 五原县| 临安市| 揭西县| 江阴市| 始兴县| 乌什县| 县级市| 安岳县| 大悟县| 安阳市| 延吉市| 合肥市| 宕昌县| 江山市| 林西县| 池州市| 本溪市| 澄迈县| 马关县| 双江| 都江堰市| 和平县| 醴陵市| 黔西| 陇南市| 磐安县|