機器學習重要內容:特征工程之特征抽取

目錄

1、簡介

2、?為什么需要特征工程

3、特征抽取

3.1、簡介

3.2、特征提取主要內容

3.3、字典特征提取

3.4、"one-hot"編碼

3.5、文本特征提取

3.5.1、英文文本

3.5.2、結巴分詞

3.5.3、中文文本

3.5.4、Tf-idf


?所屬專欄:人工智能

文中提到的代碼如有需要可以私信我發給你噢😊

1、簡介

特征工程是使用專業背景知識和技巧處理數據,使得特征能在機器學習算法上發揮更好的作用的過程。

意義:會直接影響機器學習的效果

特征工程是機器學習中至關重要的一步,它涉及將原始數據轉換為適合機器學習模型的特征(也稱為變量或屬性)。好的特征工程可以顯著提高模型性能,因為它能夠揭示數據中的有用信息,降低噪音影響,甚至幫助模型更好地泛化到新數據。

特征工程包含內容

  • 特征抽取
  • 特征預處理
  • 特征降維

以下是特征工程的一些常見方法和技巧:

  1. 特征選擇(Feature Selection):從原始特征集中選擇最相關、最有用的特征,以降低模型的復雜性和過擬合風險。
  2. 特征提取(Feature Extraction):通過數學變換,將原始特征轉換為更具信息量的特征,例如主成分分析(PCA)、獨立成分分析(ICA)等。
  3. 特征轉換(Feature Transformation):對原始特征進行變換,以使其更適合模型,如對數、指數、歸一化、標準化等。
  4. 多項式特征擴展(Polynomial Feature Expansion):將原始特征的多項式組合添加到特征集中,以捕獲特征之間的非線性關系。
  5. 時間序列特征處理:針對時間序列數據,可以提取滯后特征(lag features)、移動平均、指數加權移動平均等。
  6. 文本特征處理:對文本數據進行詞袋模型(Bag-of-Words)、TF-IDF(Term Frequency-Inverse Document Frequency)處理,或者使用詞嵌入(Word Embeddings)等技術。
  7. 類別特征編碼:將類別型特征轉換為數值型特征,例如獨熱編碼(One-Hot Encoding)、標簽編碼(Label Encoding)等。
  8. 缺失值處理:處理缺失值的方法包括刪除含有缺失值的樣本、填充缺失值、使用模型預測缺失值等。
  9. 特征交互與組合:通過對特征進行交互、組合,創建新的特征來捕獲更高級的信息。
  10. 數據降維:使用降維技術(如PCA)減少數據維度,以減少計算復雜性和噪音的影響。
  11. 領域知識引導:利用領域專業知識來設計和選擇特征,以更好地捕獲問題的本質。

在進行特征工程時,需要注意以下幾點:

  • 理解數據:深入了解數據的含義、結構和背景,以便做出更明智的特征工程決策。
  • 避免過擬合:特征工程可能導致過擬合問題,因此需要謹慎選擇和處理特征。
  • 實驗和迭代:嘗試不同的特征工程方法,并使用交叉驗證等技術來評估模型性能,以確定哪些方法有效。
  • 自動化:一些自動化特征選擇和提取工具可以幫助你快速嘗試不同的特征工程技術。

總之,特征工程是機器學習中一個關鍵且有創造性的階段,它能夠顯著影響模型的性能和泛化能力。

2、?為什么需要特征工程

機器學習領域的大神Andrew Ng(吳恩達)老師說“Coming up with features is difficult, time-consuming, requires expert knowledge. “Applied machine learning” is basically feature engineering. ”

業界廣泛流傳:數據和特征決定了機器學習的上限,而模型和算法只是逼近這個上限而已。

以下是特征工程的重要性和原因:

  1. 提取有用信息:原始數據可能包含大量的冗余或無關信息,特征工程能夠通過選擇、提取或轉換特征,從中抽取出對問題有用的信息,提高模型的預測能力。
  2. 降低維度:某些問題可能涉及大量的特征,而高維度數據會導致計算成本的增加和過擬合的風險。特征工程可以通過降維技術(如主成分分析)減少數據維度,從而提高模型效率和泛化性能。
  3. 改善模型泛化:好的特征工程有助于降低模型在新數據上的錯誤率,提高模型的泛化能力,使其能夠更好地適應未見過的數據。
  4. 處理缺失值和異常值:特征工程可以幫助處理數據中的缺失值和異常值,選擇合適的填充策略或移除異常值,從而減少對模型的不良影響。
  5. 解決非線性關系:原始數據可能包含復雜的非線性關系,特征工程可以通過多項式特征擴展、特征交互和轉換等方法,使模型能夠更好地捕獲這些關系。
  6. 提高模型解釋性:通過特征工程,可以將數據轉換為更易解釋的形式,使模型的預測結果更具可解釋性,有助于理解模型的決策依據。
  7. 適應不同模型:不同的機器學習模型對特征的需求不同,通過特征工程,可以根據模型的特點和假設來調整特征,提高模型性能。
  8. 利用領域知識:特征工程可以融入領域專業知識,根據問題背景和領域特點,選擇和設計適用的特征,更好地捕獲數據的本質。

總之,特征工程是機器學習流程中的關鍵步驟,它可以幫助我們將原始數據轉化為更有意義、更適合模型的特征,從而提高模型的性能、泛化能力和解釋性。特征工程的好壞直接影響著模型的效果,因此在實際應用中,合適的特征工程往往能夠為機器學習任務帶來顯著的提升。

3、特征抽取

3.1、簡介

特征抽取(Feature Extraction)是指從原始數據中自動或半自動地提取出具有代表性和信息豐富度的特征,以用于機器學習和數據分析任務。在特征抽取過程中,原始數據的維度可能會被降低,從而減少計算成本并提高模型的性能和泛化能力。

特征抽取的目標是將原始數據轉換為更具有判別性和表達力的特征表示,以便更好地捕獲數據中的模式、關系和變異。這有助于提高模型的訓練效果,并且可以使模型更好地適應新的未見過的數據。

特征抽取的方法可以包括以下幾種:

  1. 主成分分析(PCA):PCA是一種降維技術,通過線性變換將原始特征投影到一個新的坐標系中,使得投影后的特征具有最大的方差。這樣可以將數據的維度減少,同時保留最重要的信息。
  2. 獨立成分分析(ICA):ICA是一種用于提取獨立信號的技術,適用于信號分離和降噪等場景,可以用于音頻處理、圖像處理等領域。
  3. 特征選擇器(Feature Selectors):通過選擇最相關或最重要的特征來降低維度,例如選擇方差較大的特征、基于統計方法的特征選擇等。
  4. 詞袋模型(Bag-of-Words):在自然語言處理中,將文本數據轉換為一個表示每個單詞頻次的向量,從而構建文本的特征表示。
  5. 傅里葉變換(Fourier Transform):用于將信號從時間域轉換到頻率域,常用于信號處理和圖像處理領域。
  6. 小波變換(Wavelet Transform):類似于傅里葉變換,但可以同時提供時間和頻率信息,適用于分析非平穩信號。
  7. 自編碼器(Autoencoders):是一種神經網絡結構,通過訓練模型來學習數據的低維表示,常用于無監督學習任務。

特征抽取的選擇取決于問題的性質、數據的類型以及任務的要求。它在處理高維數據、降低計算成本、提高模型泛化能力等方面具有重要作用,是特征工程的一個關鍵組成部分。

3.2、特征提取主要內容

1、將任意數據(如文本或圖像)轉換為可用于機器學習的數字特征

特征值化是為了計算機更好的去理解數據

  • 字典特征提取(特征離散化)
  • 文本特征提取
  • 圖像特征提取(深度學習將介紹)

2、特征提取API:sklearn.feature_extraction

3.3、字典特征提取

作用:對字典數據進行特征值化

sklearn.feature_extraction.DictVectorizer(sparse=True,…)

DictVectorizer.fit_transform(X) X:字典或者包含字典的迭代器返回值:返回sparse矩陣

DictVectorizer.inverse_transform(X) X:array數組或者sparse矩陣 返回值:轉換之前數據格式

DictVectorizer.get_feature_names() 返回類別名稱

from sklearn.feature_extraction import DictVectorizer  # 實例化'''
sklearn.feature_extraction.DictVectorizer(sparse=True,…)DictVectorizer.fit_transform(X) X:字典或者包含字典的迭代器返回值:返回sparse矩陣DictVectorizer.inverse_transform(X) X:array數組或者sparse矩陣 返回值:轉換之前數據格式DictVectorizer.get_feature_names() 返回類別名稱
'''
def dict_demo():"""對字典類型的數據進行特征抽取:return: None"""data = [{'city': '北京', 'temperature': 100},{'city': '上海', 'temperature': 60},{'city': '深圳', 'temperature': 30}]# 1、實例化一個轉換器類transfer1 = DictVectorizer(sparse=False)transfer2 = DictVectorizer()# 2、調用fit_transformdata2 = transfer2.fit_transform(data)data1 = transfer1.fit_transform(data)print("返回的結果(稀疏矩陣):\n", data2)print("返回的結果(原始矩陣):\n", data1)# 打印特征名字print("特征名字:\n", transfer1.get_feature_names_out())if __name__ == '__main__':dict_demo()

結果:

3.4、"one-hot"編碼

"One-Hot"編碼是一種常用的分類變量(也稱為類別變量、離散變量)到數值變量的轉換方法,用于將類別型數據表示為二進制向量的形式。這種編碼方法在機器學習中廣泛應用于處理類別型特征,以便將其用于各種算法和模型中。

在"One-Hot"編碼中,每個類別被轉換為一個唯一的二進制向量,其中只有一個元素為1,其余元素為0。這個元素的位置表示類別的索引或標簽。這樣做的目的是消除類別之間的順序關系,以及用離散的0和1表示類別信息,使算法能夠更好地處理類別型特征。

以下是一個簡單的示例來解釋"One-Hot"編碼:

假設我們有一個表示動物種類的類別特征,包括貓、狗和鳥。"One-Hot"編碼將這三個類別轉化為如下形式的向量:

  • 貓:[1, 0, 0]
  • 狗:[0, 1, 0]
  • 鳥:[0, 0, 1]

這樣,每個類別都被表示為一個唯一的二進制向量,其中對應的位置為1,其余位置為0。

在Python中,可以使用各種工具和庫來進行"One-Hot"編碼,其中最常用的是Scikit-Learn(sklearn)庫的OneHotEncoder類。

以下是一個簡單的代碼示例:

from sklearn.preprocessing import OneHotEncoder# 創建OneHotEncoder對象
encoder = OneHotEncoder()# 假設有一個包含動物種類的數組
animal_categories = [['貓'], ['狗'], ['鳥']]# 進行One-Hot編碼
encoded_categories = encoder.fit_transform(animal_categories).toarray()# 打印編碼結果
print(encoded_categories)

結果:

3.5、文本特征提取

作用:對文本數據進行特征值化

sklearn.feature_extraction.text.CountVectorizer(stop_words=[]) 返回詞頻矩陣

CountVectorizer.fit_transform(X) X:文本或者包含文本字符串的可迭代對象 返回值:返回sparse矩陣

CountVectorizer.inverse_transform(X) X:array數組或者sparse矩陣 返回值:轉換之前數據格

CountVectorizer.get_feature_names() 返回值:單詞列表

sklearn.feature_extraction.text.TfidfVectorizer

3.5.1、英文文本

下面對以下文本進行分析:["life is short,i like python","life is too long,i dislike python"]

流程分析:

實例化類CountVectorizer

調用fit_transform方法輸入數據并轉換 (注意返回格式,利用toarray()進行sparse矩陣轉換array數組)

from sklearn.feature_extraction.text import CountVectorizer  # 文本特征提取'''
sklearn.feature_extraction.text.CountVectorizer(stop_words=[]) 返回詞頻矩陣CountVectorizer.fit_transform(X) X:文本或者包含文本字符串的可迭代對象 返回值:返回sparse矩陣CountVectorizer.inverse_transform(X) X:array數組或者sparse矩陣 返回值:轉換之前數據格CountVectorizer.get_feature_names() 返回值:單詞列表sklearn.feature_extraction.text.TfidfVectorizer
'''
def text_count_demo():"""對文本進行特征抽取,countvetorizer:return: None"""data = ["life is short,i like like python","life is too long,i dislike python"]# 1、實例化一個轉換器類transfer = CountVectorizer()# 2、調用fit_transformdata = transfer.fit_transform(data)print("文本特征抽取的結果:\n", data.toarray())print("返回特征名字:\n", transfer.get_feature_names_out())if __name__ == '__main__':text_count_demo()

輸出結果:

🔺如果替換成中文,則會出問題:"人生苦短,我喜歡Python" "生活太長久,我不喜歡Python"

為什么會得到這樣的結果呢,仔細分析之后會發現英文默認是以空格分開的。

其實就達到了一個分詞的效果,所以我們要對中文進行分詞處理。

這里需要用到“結巴分詞”

3.5.2、結巴分詞

結巴分詞(jieba)是一個流行的中文文本分詞工具,被廣泛應用于自然語言處理(NLP)任務中,如文本分析、信息檢索、情感分析、機器翻譯等。結巴分詞是基于Python開發的開源項目,它提供了一種可靠高效的中文分詞解決方案。

以下是結巴分詞的一些特點和功能:

  1. 中文分詞:結巴分詞可以將中文文本切分成一個一個有意義的詞語(詞匯),從而為后續的文本處理和分析提供基礎。
  2. 支持多種分詞模式:結巴分詞提供了不同的分詞模式,包括精確模式、全模式、搜索引擎模式等,以適應不同的分詞需求。
  3. 支持用戶自定義詞典:用戶可以根據需要添加自定義的詞典,用于識別領域特定的術語、詞匯,從而提高分詞的準確性。
  4. 高性能:結巴分詞在分詞速度上表現出色,可以處理大規模的文本數據。
  5. 支持繁體字分詞:除了簡體中文,結巴分詞還支持繁體中文文本的分詞。
  6. 詞性標注:結巴分詞可以對分詞結果進行詞性標注,幫助識別每個詞語的詞性,如名詞、動詞等。
  7. 適應多種任務:結巴分詞不僅可以用于分詞,還可以用于關鍵詞提取、文本去重、文本相似度計算等任務。

3.5.3、中文文本

案例分析:

對以下三句話進行特征值化:

今天很殘酷,明天更殘酷,后天很美好,

但絕對大部分是死在明天晚上,所以每個人不要放棄今天。

我們看到的從很遠星系來的光是在幾百萬年之前發出的,

這樣當我們看到宇宙時,我們是在看它的過去。

如果只用一種方式了解某樣事物,你就不會真正了解它。

了解事物真正含義的秘密取決于如何將其與我們所了解的事物相聯系。

分析:

準備句子,利用jieba.cut進行分詞

實例化CountVectorizer

將分詞結果變成字符串當作fit_transform的輸入值

from sklearn.feature_extraction.text import CountVectorizer  # 文本特征提取
import jieba  # 結巴分詞'''
使用結巴分詞,對中文特征進行提取
'''
def text_chinese_count_demo2():"""對中文進行特征抽取:return: None"""data = ["一種還是一種今天很殘酷,明天更殘酷,后天很美好,但絕對大部分是死在明天晚上,所以每個人不要放棄今天。","我們看到的從很遠星系來的光是在幾百萬年之前發出的,這樣當我們看到宇宙時,我們是在看它的過去。","如果只用一種方式了解某樣事物,你就不會真正了解它。了解事物真正含義的秘密取決于如何將其與我們所了解的事物相聯系。"]# 將原始數據轉換成分好詞的形式text_list = []for sent in data:text_list.append(" ".join(list(jieba.cut(sent))))  # 這里使用結巴分詞print(text_list)# 1、實例化一個轉換器類# transfer = CountVectorizer(sparse=False)transfer = CountVectorizer()# 2、調用fit_transformdata = transfer.fit_transform(text_list)print("文本特征抽取的結果:\n", data.toarray())print("返回特征名字:\n", transfer.get_feature_names_out())if __name__ == '__main__':text_chinese_count_demo2()

結果:

但如果把這樣的詞語特征用于分類,會出現什么問題?

該如何處理某個詞或短語在多篇文章中出現的次數高這種情況?

這種情況下,我們需要用到"Tf-idf文本特征提取"。

3.5.4、Tf-idf

TF-IDF(Term Frequency-Inverse Document Frequency)是一種常用的文本特征提取方法,用于將文本數據轉換為數值特征表示,以便用于機器學習和信息檢索任務。

TF-IDF反映了一個詞在文本中的重要性,同時考慮了詞頻和文檔頻率的影響。

TF-IDF文本特征提取的原理如下:

  1. 詞頻(Term Frequency,TF):表示一個詞在一篇文檔中出現的頻率。計算方法為:一個詞在文檔中出現的次數除以文檔的總詞數。
  2. 逆文檔頻率(Inverse Document Frequency,IDF):表示一個詞在所有文檔中的普遍程度。計算方法為:總文件數目除以包含該詞語之文件的數目,再將得到的商取以10為底的對數IDF的目的是降低常見詞對文檔區分能力的影響。
  3. TF-IDF:將詞頻和逆文檔頻率相乘,得到一個詞在文檔中的重要性得分。高頻出現但在其他文檔中不常見的詞,得分會相對較高。

公式:

tfidf_{i,j}=tf_{i,j}\times tf_{i,j}

TF-IDF的優點在于它可以凸顯文本中的關鍵詞,過濾掉一些無意義的常見詞,并為文本賦予數值特征,使得文本數據適用于各種機器學習算法。

案例:

from sklearn.feature_extraction.text import TfidfVectorizer  # TF-IDF特征提取
import jieba  # 結巴分詞'''
提取TF-IDF特征
'''
def text_chinese_tfidf_demo():"""對中文進行特征抽取:return: None"""data = ["一種還是一種今天很殘酷,明天更殘酷,后天很美好,但絕對大部分是死在明天晚上,所以每個人不要放棄今天。","我們看到的從很遠星系來的光是在幾百萬年之前發出的,這樣當我們看到宇宙時,我們是在看它的過去。","如果只用一種方式了解某樣事物,你就不會真正了解它。了解事物真正含義的秘密取決于如何將其與我們所了解的事物相聯系。"]# 將原始數據轉換成分好詞的形式text_list = []for sent in data:text_list.append(" ".join(list(jieba.cut(sent))))  # 這里使用結巴分詞print(text_list)transfer = TfidfVectorizer(stop_words=['一種', '不會', '不要'])# 2、調用fit_transformdata = transfer.fit_transform(text_list)print("文本特征抽取的結果:\n", data.toarray())print("返回特征名字:\n", transfer.get_feature_names_out())if __name__ == '__main__':text_chinese_tfidf_demo()

TF-IDF特征提取如下:

這段輸出表示TF-IDF文本特征抽取的結果,是一個特征矩陣,其中每一行代表一個文本樣本,每一列表示一個單詞的TF-IDF得分。

TF-IDF(詞頻-逆文檔頻率)是一種用于衡量一個詞在文本中的重要性的指標,結合了詞頻(TF)和逆文檔頻率(IDF)。TF-IDF越高,說明該詞在當前文本中越重要且越不常見于其他文本。

以下是對輸出矩陣的解釋:

  • 第一行:表示第一篇文本樣本的TF-IDF特征向量。特征向量中的每個元素表示對應單詞的TF-IDF得分。例如,"今天"的TF-IDF得分是0.43643578,"很"的得分是0.21821789。
  • 第二行:表示第二篇文本樣本的TF-IDF特征向量。例如,"我們"的TF-IDF得分是0.2410822,"光"的得分是0.55004769。
  • 第三行:表示第三篇文本樣本的TF-IDF特征向量。例如,"了解"的TF-IDF得分是0.644003,"事物"的得分是0.3220015。

在這個特征矩陣中,每一行表示一個文本樣本,每一列對應一個單詞(詞匯表中的詞)。

每個元素表示對應單詞在對應文本中的TF-IDF得分。

這個矩陣將文本數據轉換為數值特征表示,可以作為機器學習算法的輸入。

通常情況下,為了方便理解,這些得分會在實際應用中進行歸一化或者規范化處理。

Tf-idf的重要性:分類機器學習算法進行文章分類中前期數據處理方式

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/38288.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/38288.shtml
英文地址,請注明出處:http://en.pswp.cn/news/38288.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

LLaMA長度外推高性價比trick:線性插值法及相關改進源碼閱讀及相關記錄

前言 最近,開源了可商用的llama2,支持長度相比llama1的1024,拓展到了4096長度,然而,相比GPT-4、Claude-2等支持的長度,llama的長度外推顯得尤為重要,本文記錄了三種網絡開源的RoPE改進方式及相…

Vue-打印組件頁面

場景: 需要將頁面的局部信息打印出來&#xff0c;只在前端實現&#xff0c;不要占用后端的資源。經過百度經驗&#xff0c;決定使用 print-js和html2canvas組件。 1. 下載包 npm install print-js --save npm install --save html2canvas 2. 組件內引用 <script>impo…

C語言之數組指針和指針數組

C語言之數組指針和指針數組 一、含義二、定義2.1 指針數組2.2 數組指針 三、使用3.1 指針數組在參數傳遞時的使用3.1.1 指針數組的排序3.2 數組指針在參數傳遞時的使用 一、含義 指針數組&#xff1a;顧名思義&#xff0c;其為一個數組&#xff0c;數組里面存放著多個指針&…

C#生成隨機驗證碼

以下是一個簡單的C#驗證碼示例&#xff1a; private void GenerateCaptcha() {// 生成隨機字符串string chars "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";Random random new Random();string captchaString new string(Enumerable.Repe…

TPAMI, 2023 | 用壓縮隱逆向神經網絡進行高精度稀疏雷達成像

CoIR: Compressive Implicit Radar | IEEE TPAMI, 2023 | 用壓縮隱逆向神經網絡進行高精度稀疏雷達成像 注1:本文系“無線感知論文速遞”系列之一,致力于簡潔清晰完整地介紹、解讀無線感知領域最新的頂會/頂刊論文(包括但不限于Nature/Science及其子刊;MobiCom, Sigcom, MobiSy…

Java【算法 04】HTTP的認證方式之DIGEST認證詳細流程說明及舉例

HTTP的認證方式之DIGEST 1.是什么2.認值流程2.1 客戶端發送請求2.2 服務器返回質詢信息2.2.1 質詢參數2.2.2 質詢舉例 2.3 客戶端生成響應2.4 服務器驗證響應2.5 服務器返回響應 3.算法3.1 SHA-2563.1.1 Response3.1.2 A13.1.3 A2 3.2 MD53.2.1 Request-Digest3.2.2 A13.2.3 A2…

CSS3 中新增了哪些常見的特性?

聚沙成塔每天進步一點點 ? 專欄簡介? 圓角&#xff08;Border Radius&#xff09;? 漸變&#xff08;Gradients&#xff09;? 陰影&#xff08;Box Shadow&#xff09;? 文本陰影&#xff08;Text Shadow&#xff09;? 透明度&#xff08;Opacity&#xff09;? 過渡&…

Spring boot與Spring cloud 之間的關系

Spring boot與Spring cloud 之間的關系 Spring boot 是 Spring 的一套快速配置腳手架&#xff0c;可以基于spring boot 快速開發單個微服務&#xff0c;Spring Boot&#xff0c;看名字就知道是Spring的引導&#xff0c;就是用于啟動Spring的&#xff0c;使得Spring的學習和使用…

MATLAB中xlsread函數用法

目錄 語法 說明 示例 將工作表讀取到數值矩陣 讀取元胞的范圍 讀取列 請求數值、文本和原始數據 對工作表執行函數 請求自定義輸出 局限性 xlsread函數的功能是讀取Microsoft Excel 電子表格文件 語法 num xlsread(filename) num xlsread(filename,sheet) num x…

Nacos和GateWay路由轉發NotFoundException: 503 SERVICE_UNAVAILABLE “Unable to find

問題再現&#xff1a; 2023-08-15 16:51:16,151 DEBUG [reactor-http-nio-2][CompositeLog.java:147] - [dc73b32c-1] Encoding [{timestampTue Aug 15 16:51:16 CST 2023, path/content/course/list, status503, errorService Unavai (truncated)...] 2023-08-15 16:51:16,17…

leetcode27—移除元素

思路&#xff1a; 參考26題目雙指針的思想&#xff0c;只不過這道題不是快慢指針。 看到示例里面數組是無序的&#xff0c;也就是說后面的元素也是可能跟給定 val值相等的&#xff0c;那么怎么處理呢。就想到了從前往后遍歷&#xff0c;如果left對應的元素 val時&#xff0c…

汽車制造業上下游協作時 外發數據如何防泄露?

數據文件是制造業企業的核心競爭力&#xff0c;一旦發生數據外泄&#xff0c;就會給企業造成經濟損失&#xff0c;嚴重的&#xff0c;可能會帶來知識產權剽竊損害、名譽傷害等。汽車制造業&#xff0c;會涉及到重要的汽車設計圖紙&#xff0c;像小米發送汽車設計圖紙外泄事件并…

[足式機器人]Part5 機械設計 Ch00/01 緒論+機器結構組成與連接 ——【課程筆記】

本文僅供學習使用 本文參考&#xff1a; 《機械設計》 王德倫 馬雅麗課件與日常作業可登錄網址 http://edu.bell-lab.com/manage/#/login&#xff0c;選擇觀摩登錄&#xff0c;查看2023機械設計2。 機械設計-Ch00Ch01——緒論機器結構組成與連接 Ch00-緒論0.1 何為機械設計——…

12.Eclipse導入Javaweb項目

同事復制一份他的項目給我ekp.rar (懶得從SVN上拉取代碼了)放在workspace1目錄下 新建一個文件夾 workspace2&#xff0c;Eclipse切換到workspace2工作空間 選擇Import導入 選擇導入的項目(這里是放到workspace1里面) 拷貝一份到workspace2里面 例子 所有不是在自己電腦上開發…

可白嫖的4家免費CDN,并測試其網絡加速情況(2023版)

網站加載速度優化過程中&#xff0c;不可避免的會用上CDN來加速資源的請求速度。但是市面上的CDN資源幾乎都是要收費的&#xff0c;而且價格還不便宜&#xff0c;對于小公司站長來講&#xff0c;這將是一筆不小的開銷。不過還是有一些良心公司給我們提供了免費的資源&#xff0…

ZooKeeper的基本概念

集群角色 通常在分布式系統中&#xff0c;構成一個集群的每一臺機器都有自己的角色&#xff0c;最典型的集群模式就是Master/Slave模式(主備模式)。在這種模式中&#xff0c;我們把能夠處理所有寫操作的機器稱為Master機器&#xff0c;把所有通過異步復制方式獲取最新數據&…

Redis_億級訪問量數據處理

11. 億級訪問量數據處理 11.1 場景表述 手機APP用戶登錄信息&#xff0c;一天用戶登錄ID或設備ID電商或者美團平臺&#xff0c;一個商品對應的評論文章對應的評論APP上有打卡信息網站上訪問量統計統計新增用戶第二天還留存商品評論的排序月活統計統計獨立訪客(Unique Vistito…

【BEV】3D視覺 PRELIMINARY

這里的知識來自于論文 Delving into the Devils of Bird’s-eye-view Perception: A Review, Evaluation and Recipe 的 Appendix B.1 部分來自 這篇文章 從透視圖轉向鳥瞰圖。&#xff08;Xw、Yw、Zw&#xff09;、&#xff08;Xc、Yc、Zc&#xff09;表示世界World坐標和相…

Android學習之路(4) UI控件之Button (按鈕)與 ImageButton (圖像按鈕)

本節引言&#xff1a; 今天給大家介紹的Android基本控件中的兩個按鈕控件&#xff0c;Button普通按鈕和ImageButton圖像按鈕&#xff1b; 其實ImageButton和Button的用法基本類似&#xff0c;至于與圖片相關的則和后面ImageView相同&#xff0c;所以本節 只對Button進行講解&am…

vue自定義穿梭框支持遠程滾動加載

分享-2023年資深前端進階&#xff1a;前端登頂之巔-最全面的前端知識點梳理總結&#xff0c;前端之巔 *分享一個使用比較久的&#x1fa9c; 技術框架公司的選型(老項目)&#xff1a;vue2 iview-ui 方案的實現思路是共性的&#xff0c;展現UI樣式需要你們自定義進行更改&#…