前言
對於機器學習領域的開發人員來說,Python是最流行的程式語言之一。Python既不是最快的語言(很容易被C和C+取代),也不一定是最容易學習的語言(R和Matlab可以有更小的學習曲線)。那麼,為什麼python被 57%的數據科學家和機器學習開發人員 排名 第一位是PYPL指數 作為當今最流行的程式語言之一?作為一名程式設計師,我認為這可以歸結為兩件事:編程的簡單性和Python提供的大量庫。
很簡單。輕鬆點。方便。
Python允許開發人員在短時間內從一個想法到另一個產品。雖然為類似過程編寫代碼可能需要開發語言(如c+)的開發人員花費數小時甚至幾天的時間來計劃、完善和編寫,但是python開發人員可以編寫 相同代碼(分鐘) 。以下面的示例為例,它探索了使用c+讀取一個簡單的CSV文件,我是從c+臨時編寫的 這個解決方案 輸出到矩陣
#include <iterator>
#include <iostream>
#include <fstream>
#include <sstream>
#include <vector>
#include <string>
class CSVRow
{
public:
std::string const& operator[](std::size_t index) const
{
return m_data[index];
}
std::size_t size() const
{
return m_data.size();
}
void readNextRow(std::istream& str)
{
std::string line;
std::getline(str, line);
std::stringstream lineStream(line);
std::string cell;
m_data.clear();
while(std::getline(lineStream, cell, ','))
{
m_data.push_back(cell);
}
if (!lineStream && cell.empty())
{
m_data.push_back("");
}
}
private:
std::vector<std::string> m_data;
};
std::istream& operator>>(std::istream& str, CSVRow& data)
{
data.readNextRow(str);
return str;
}
int main()
{
std::ifstream file("test.csv");
std::vector< CSVRow > mat;
CSVRow row;
while(file >> row)
mat.push_back(row);
}
它的工作原理是應該的,但是代碼非常龐大。即使我們忽略了這是一個49行的解決方案,它是很難閱讀和理解。現在讓我們看看我的python版本的相同代碼。
import csv
mat = csv.reader(open('test.csv','r'), delimiter=',')
就這樣 2行 。只有一行實際代碼和一個import命令才能構造CSV對象。最重要的是,它易於閱讀和理解,因此可以很容易地傳遞給另一個開發人員。
圖書館!
Python是一種簡單的閱讀、理解和代碼語言,非常好,但是這種語言的簡單性在哪裡與機器學習相結合呢?圖書館是這裡的關鍵。想要創建n維矩陣在你的程序中實現矩陣代數?使用 Numpy。想要執行高級數學函數分析你的Numpy陣列?使用 西皮 。想看圖形可視化你的數據?Matplotlib 就是答案。也許你想要結合Scipy和Numpy來創建基本的機器學習模型;進入 Scikit-學習 。想要更具體的東西嗎?也許 NLTK 圖書館自然語言處理或者 OpenCV 圖書館圖像分析更合適。也許,你想超越機器學習和利用深度學習?像這樣的圖書館 TensorFlow , 西亞諾 ,和 皮托爾奇 可以做繁重的工作,而類如 喀拉斯 可以讓你更容易編碼。關鍵是有很多資源可以讓您快速創建機器學習模型和應用程式。
封閉思想
雙鍵 領導原則 我們在阿南特舉行的 對行動的偏見 和交付成果 . 對於開發人員和商業領袖來說,重要的是優先考慮做決定和完成任務,而不是花費大量的時間來尋找「完美」的解決方案。重要的是要理解python不是機器學習中應該使用的唯一程式語言,也不是最理想的語言。從長遠來看,可能需要使用python以外的語言來完善您的機器學習過程。然而,python是唯一的,因為它將允許您快速創建一個 功能原型 機器學習模型,即 合作者也是龐大的開發者社區 .
總結
有很多炒作與興趣在當今的機器學習環境下,大多數聽說過機器學習的人從來沒有真正嘗試過機器學習,因為他們認為自己不具備將自己的想法轉化為現實的技術技能或知識。Python是概念和產品之間的橋樑。帶著 語言的簡單性 、高級庫,最重要的是開發人員社區,任何技能水平的程式設計師都可以創建自己的機器學習應用程式。
大家如果對Python有興趣的話點個關注,與時俱進。同時我也整理了一些Python的資料提供給大家:關注加轉發後私信回復「資料」即可獲取。