iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >怎么用Python开启机器学习
  • 775
分享到

怎么用Python开启机器学习

2023-06-02 07:06:34 775人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

本篇内容主要讲解“怎么用python开启机器学习”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用Python开启机器学习”吧!随着行业内机器学习的崛起,能够帮用户快速迭代整个过程的工具变得至

本篇内容主要讲解“怎么用python开启机器学习”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用Python开启机器学习”吧!

随着行业内机器学习的崛起,能够帮用户快速迭代整个过程的工具变得至关重要。Python,机器学习技术领域冉冉升起的一颗新星,带你走向成功实现人生价值。因此,用 Python 实现机器学习是非常有必要的。

用 Python 实现机器学习的介绍

很多伙伴可能想不出为什么是 Python 而不是其他的语言?根据我的经验,Python 是最容易学习的编程语言之一。现在需要快速迭代整个过程,与此同时,数据科学家不需要深入了解这种语言,因为他们可以快速掌握它。

有多容易呢?

for anything in the_list:    print(anything)

是不是想英语一样,哈哈。Python 的语法和英语(或人类语言,而不是机器语言)语法关系密切。在 Python 的语法中没有愚蠢的大括号造成的困扰。我有一个从事质量保证(Quality Assurance)工作的同事,虽然不是软件工程师,但她可以在一天内写出产品级的 Python 代码。(是真的!)

我将在下文中介绍几个基于 Python 的库。作为数据分析师和数据科学家,我们可以利用他们的杰作来帮助我们完成任务。这些不可思议的库是用 Python 实现机器学习的必备工具。

NumPy

这是一个非常有名的数据分析库。从计算数据分布的中位数,到处理多维数组,NumPy 都可以帮你完成。

pandas

这是用来处理 CSV 文件的。当然了,你还需要处理一些表格、查看统计数据等,那 Pandas 就是可以满足你的需求的工具。

Matplotlib

把数据存储在 Pandas 的数据框后,你可能需要做一些可视化来理解数据的更多信息。毕竟一图抵千言。

Seaborn

这是另一个可视化工具,但这个工具更侧重于统计结果的可视化,比如直方图、饼图、曲线图或相关性表等。

Scikit-Learn

这是用 Python 实现机器学习的终极工具。所谓用 Python 实现机器学习指的就是这个——Scikit-Learn。所有你需要的从算法到提升的内容都能在这里找到。

TensorflowPyTorch

针对这两个工具我不会说太多。但如果你对深度学习感兴趣的话,可以详细了解一下,它们值得你花时间去学习。(我下次会再写一篇关于深度学习的教程,敬请期待!)

Python 机器学习项目

示例项目:

泰坦尼克:从灾难中进行机器学习(https://www.)

就是众所周知的泰坦尼克号。这是一场发生在 1912 年的灾难,这场灾难波及到的乘客和机组成员共 2224 人,其中 1502 人遇难死亡。这项 Kaggle 竞赛(或者说是教程)提供了灾难中的真实数据。你的任务是解释这些数据,并预测出灾难中哪些人会活下来,哪些人不会。

用 Python 实现机器学习的教程

在深入了解泰坦尼克号的数据之前,我们要先安装一些必需的工具。

首先当然是 Python。第一次安装 Python 需要从官网上安装。你要安装 3.6 以上的版本,这样才能跟最新版本的库保持同步。

Python 官方网站:Https://www.

然后可以用 Python 的 pip 安装所有的库。你刚刚下载的 Python 发行版会自动安装 pip。

需要的其他工具都可以用 pip 安装。打开终端、命令行或 Powershell,命令如下:

pip install numpypip install pandaspip install matplotlibpip install seabornpip install scikit-learnpip install jupyter

看起来一切都运行良好。但是等一下,什么叫 jupyter?jupyter 表示 Julia、Python 和 R,因此它实际上是 Jupytr。但这个单词看起来太奇怪了,所以他们把它变成了 Jupyter。这是一个很有名的笔记本,你可以在这个笔记本上写交互式的 Python 代码。

只要在终端中输入 jupyter notebook,就可以打开浏览器页面

你可以把代码写在绿色矩形中,而且可以交互式地编写并评价 Python 代码。

现在你已经安装了所有的工具。我们开始吧!

数据探索

探索数据是第一步。你需要从 Kaggle 的 Titanic 页面下载数据,然后将下载的数据放到你启动 Jupyter 笔记本的文件夹中。

数据下载地址:https://www.ta

然后导入必要的库:

import numpy as np import pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsimport warningswarnings.filterwarnings('ignore')%matplotlib inline

载入数据:

train_df=pd.read_csv("train.csv")train_df.head()

这就是我们的数据。它有下面几列:

  • PassengerId,乘客的标识符;

  • Survived,他(她)是否存活了下来;

  • Pclass,舱室类别,也许 1 表示经济舱,2 表示商务舱,3 表示头等舱;

  • Name,乘客的名字;

  • Sex,性别;

  • Age,年龄;

  • SibSp,即兄弟姐妹(siblings)或配偶(spouses),表示在船上的兄弟姐妹以及配偶的数目;

  • Parch,即父母(Parents)或子女(Children),表示在船上的父母和子女的数目;

  • Ticket,船票详情;

  • Cabin,舱号,NaN 表示未知;

  • Embarked,登船的起始地,S 表示南安普顿(Southampton),Q 表示皇后镇(Queenstown),C 表示瑟堡(Cherbourg)

在探索数据时,常常会遇到数据缺失的问题。我们来看一下

def missingdata(data):    total = data.isnull().sum().sort_values(ascending = False)    percent = (data.isnull().sum()/data.isnull().count()*100).sort_values(ascending = False)    ms=pd.concat([total, percent], axis=1, keys=['Total', 'Percent'])    ms= ms[ms["Percent"] > 0]    f,ax =plt.subplots(figsize=(8,6))    plt.xticks(rotation='90')    fig=sns.barplot(ms.index, ms["Percent"],color="green",alpha=0.8)    plt.xlabel('Features', fontsize=15)    plt.ylabel('Percent of missing values', fontsize=15)    plt.title('Percent missing data by feature', fontsize=15)    return msmissingdata(train_df)

舱号、年龄以及登船地的数据都有一些缺失值,而舱号信息有大量的缺失。我们需要对它们进行处理,也就是所谓的数据清理(Data Cleaning)。

数据清理

我们 90% 的时间都花在这上面。我们要针对每一个机器学习项目进行大量的数据清理。当数据清理干净时,我们就可以轻松地进行下一步了,什么都不用担心。

数据清理中最常用的技术是填充缺失数据。你可以用众数、平均数或中位数来填充缺失数据。选择这些数据没有绝对规则,你可以一一尝试,然后看看它们的表现如何。但是根据经验来讲,分类数据只能用众数,连续数据可以用中位数或平均数。所以我们用众数来填充登船地数据,用中位数来填充年龄数据。

train_df['Embarked'].fillna(train_df['Embarked'].mode()[0], inplace = True)train_df['Age'].fillna(train_df['Age'].median(), inplace = True)

接下来的重要操作是删除数据,尤其针对大量缺失的数据。我们针对舱号数据进行以下处理:

drop_column = ['Cabin']train_df.drop(drop_column, axis=1, inplace = True)

现在检查一下清理过的数据。

print('check the nan value in train data')print(train_df.isnull().sum())

特征工程

现在数据已经清理干净了。接下来我们要进行特征工程。

特征工程基本上就是根据当前可用数据发现特征或数据的技术。有几种方法可以实现这种技术。在很多时候这都是常识。

我们以登船地数据为例——这是用 Q、S 或 C 填充的数据。Python 库不能处理这个,因为它只能处理数字。所以你需要用所谓的独热向量化(One Hot Vectorization)来处理,它可以把一列变成三列。用 0 或 1 填充 Embarked_Q、Embarked_S 和 Embarked_C,来表示这个人是不是从这个港口出发的。

再以 SibSp 和 Parch 为例。这两列没有什么有趣的,但是你可能会想知道某个乘客有多少家人登上了这艘船。如果家人多的话可能会增加生存几率,因为他们可以互相帮助。从另一个角度说,单独登船的乘客可能很难生存下去。

因此你可以创建新的一列,这一列是成员数量(family size),family size = SibSp + Parch + 1(乘客自己)。

最后一个例子是以 bin 列为例的。由于你认为很难区分具有相似值的事物,所以这种操作创建了值范围(ranges of values),然后将多个值组合在一起。比如,5 岁和 6 岁的乘客之间有显著的差异吗?或者 45 和 46 岁的人之间有显著的差异吗?

这就是创建 bin 列的原因。也许就年龄而言,我们可以创建 4 列——幼儿(0~14 岁)、青少年(14~20 岁)、成年人(20~40 岁)以及年长的人(40 岁以上)。

编码如下:

all_data = train_dffor dataset in all_data :    dataset['FamilySize'] = dataset['SibSp'] + dataset['Parch'] + 1import re# Define function to extract titles from passenger namesdef get_title(name):    title_search = re.search(' ([A-Za-z]+)\.', name)    # If the title exists, extract and return it.    if title_search:        return title_search.group(1)    return ""# Create a new feature Title, containing the titles of passenger namesfor dataset in all_data:    dataset['Title'] = dataset['Name'].apply(get_title)# Group all non-common titles into one single grouping "Rare"for dataset in all_data:    dataset['Title'] = dataset['Title'].replace(['Lady', 'Countess','Capt', 'Col','Don',                                                  'Dr', 'Major', 'Rev', 'Sir', 'Jonkheer', 'Dona'], 'Rare')dataset['Title'] = dataset['Title'].replace('Mlle', 'Miss')    dataset['Title'] = dataset['Title'].replace('Ms', 'Miss')    dataset['Title'] = dataset['Title'].replace('Mme', 'Mrs')for dataset in all_data:    dataset['Age_bin'] = pd.cut(dataset['Age'], bins=[0,14,20,40,120], labels=['Children','Teenage','Adult','Elder'])for dataset in all_data:    dataset['Fare_bin'] = pd.cut(dataset['Fare'], bins=[0,7.91,14.45,31,120], labels ['Low_fare','median_fare', 'Average_fare','high_fare'])traindf=train_dffor dataset in traindf:    drop_column = ['Age','Fare','Name','Ticket']    dataset.drop(drop_column, axis=1, inplace = True)drop_column = ['PassengerId']traindf.drop(drop_column, axis=1, inplace = True)traindf = pd.get_dummies(traindf, columns = ["Sex","Title","Age_bin","Embarked","Fare_bin"],                             prefix=["Sex","Title","Age_type","Em_type","Fare_type"])

现在,你已经创建完成所有的特征了。接着我们看看这些特征之间的相关性:

sns.heatmap(traindf.corr(),annot=True,cmap='RdYlGn',linewidths=0.2) #data.corr()-->correlation matrixfig=plt.GCf()fig.set_size_inches(20,12)plt.show()

相关值接近 1 意味着高度正相关,-1 意味着高度负相关。例如,性别为男和性别为女之间就呈负相关,因为必须将乘客识别为一种性别(或另一种)。此外,你还可以看到,除了用特征工程创建的内容外,没有哪两种是高度相关的。这证明我们做得对。

如果某些因素之间高度相关会怎么样?我们可以删除其中的一个,新列中的信息并不能给系统提供任何新信息,因为这两者是完全一样的。

用 Python 实现机器学习

现在我们已经到达本教程的高潮——机器学习建模。

from sklearn.model_selection import train_test_split #for split the datafrom sklearn.metrics import accuracy_score  #for accuracy_scorefrom sklearn.model_selection import KFold #for K-fold cross validationfrom sklearn.model_selection import cross_val_score #score evaluationfrom sklearn.model_selection import cross_val_predict #predictionfrom sklearn.metrics import confusion_matrix #for confusion matrixall_features = traindf.drop("Survived",axis=1)Targeted_feature = traindf["Survived"]X_train,X_test,y_train,y_test = train_test_split(all_features,Targeted_feature,test_size=0.3,random_state=42)X_train.shape,X_test.shape,y_train.shape,y_test.shape

Scikit-Learn 库中有多种算法供你选择:

  • 逻辑回归

  • 随机森林

  • 支持向量机

  • K 最近邻

  • 朴素贝叶斯

  • 决策树

  • AdaBoost

  • LDA

  • 梯度增强

你可能感到不知所措,想弄清什么是什么。别担心,只要将它当做「黑箱」对待就好——选一个表现最好的。(我之后会写一篇完整的文章讨论如何选择这些算法。)

以我最喜欢的随机森林算法为例:

from sklearn.ensemble import RandomForestClassifiermodel = RandomForestClassifier(criterion='gini', n_estimators=700,                             min_samples_split=10,min_samples_leaf=1,                             max_features='auto',oob_score=True,                             random_state=1,n_jobs=-1)model.fit(X_train,y_train)prediction_rm=model.predict(X_test)print('--------------The Accuracy of the model----------------------------')print('The accuracy of the Random Forest Classifier is', round(accuracy_score(prediction_rm,y_test)*100,2))kfold = KFold(n_splits=10, random_state=22) # k=10, split the data into 10 equal partsresult_rm=cross_val_score(model,all_features,Targeted_feature,cv=10,scoring='accuracy')print('The cross validated score for Random Forest Classifier is:',round(result_rm.mean()*100,2))y_pred = cross_val_predict(model,all_features,Targeted_feature,cv=10)sns.heatmap(confusion_matrix(Targeted_feature,y_pred),annot=True,fmt='3.0f',cmap="summer")plt.title('Confusion_matrix', y=1.05, size=15)

哇哦!准确率高达 83%。就第一次尝试而言,这个结果已经很好了。

交叉验证分数的意思是 K 折验证方法。如果 K=10,就是说要把数据分成 10 个变量,计算所有分数的均值,并将它们作为最终分数。

微调

现在你已经完成了用 Python 实现机器学习的步骤。但再加一个步骤可以让你得到更好的结果——微调。微调的意思是为机器学习算法找到最佳参数。以上面的随机森林代码为例:

model = RandomForestClassifier(criterion='gini', n_estimators=700,                             min_samples_split=10,min_samples_leaf=1,                             max_features='auto',oob_score=True,                             random_state=1,n_jobs=-1)

你需要设置许多参数。顺便说一下,上面的都是默认值。你可以根据需要改变参数。但当然了,这需要花费很多时间。

别担心——有一种叫做网格搜索(Grid Search)的工具,它可以自动找出最佳参数。听起来还不错,对吧?

# Random Forest Classifier Parameters tunning model = RandomForestClassifier()n_estim=range(100,1000,100)## Search grid for optimal parametersparam_grid = {"n_estimators" :n_estim}model_rf = GridSearchCV(model,param_grid = param_grid, cv=5, scoring="accuracy", n_jobs= 4, verbose = 1)model_rf.fit(train_X,train_Y)# Best scoreprint(model_rf.best_score_)#best estimatORModel_rf.best_estimator_

到此,相信大家对“怎么用Python开启机器学习”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: 怎么用Python开启机器学习

本文链接: https://www.lsjlt.com/news/229244.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么用Python开启机器学习
    本篇内容主要讲解“怎么用Python开启机器学习”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用Python开启机器学习”吧!随着行业内机器学习的崛起,能够帮用户快速迭代整个过程的工具变得至...
    99+
    2023-06-02
  • python机器学习工具pyCaret怎么使用
    这篇文章主要介绍“python机器学习工具pyCaret怎么使用”,在日常操作中,相信很多人在python机器学习工具pyCaret怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python机器学习工...
    99+
    2023-06-25
  • Python机器学习:6本机器学习书籍推
    机器学习是实现人工智能的一种途径,它和数据开掘有一定的相似性,也是一门多领域交叉学科,触及概率论、核算学、逼近论、凸剖析、核算复杂性理论等多门学科。对比于数据开掘从大数据之间找互相特性而言,机器学习愈加注重算法的设计,让核算机可以白动地从...
    99+
    2023-01-31
    机器 书籍 Python
  • 什么是Python机器学习
    本篇内容介绍了“什么是Python机器学习”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!什么是机器学习?亚瑟·塞缪尔(...
    99+
    2023-06-16
  • 学习Python,开发智能聊天机器人
    学习 Python,开发智能聊天机器人,需要具体代码示例 随着人工智能技术的不断发展,智能聊天机器人已经成为了人们对未来生活的一种想象。而 Python 作为一种简单易学、功能强大的编程语言,也成为了众多开发者实现智能聊天机器人...
    99+
    2024-01-19
    聊天机器人 智能 Python
  • python机器学习中英
    监督学习,supervised learning无监督学习,unsupervised learning分类,classificat回归,regression降维,dimensionality reduction聚类,clustering特征...
    99+
    2023-01-31
    中英 机器 python
  • python opencv3机器学习之EM算法怎么使用
    今天小编给大家分享一下python opencv3机器学习之EM算法怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解...
    99+
    2023-07-02
  • 掌握 Python 机器学习秘诀,开启人工智能时代的大门
    随着人工智能时代的到来,机器学习成为了一项热门技术,受到广大开发者的追捧。Python 作为一门强大的编程语言,拥有丰富的库和工具,非常适合用于机器学习的开发。本文将介绍一些 Python 机器学习的秘诀,帮助开发者快速掌握机器学习技术,...
    99+
    2024-02-22
    Python 机器学习 人工智能 数据科学 深度学习
  • python常用机器学习及深度学习库有哪些
    本篇内容介绍了“python常用机器学习及深度学习库有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言目前,随着人工智能的大热,吸引了...
    99+
    2023-06-30
  • python机器学习实战(三)
    原文链接:www.cnblogs.com/fydeblog/p/7277205.html 前言 这篇博客是关于机器学习中基于概率论的分类方法--朴素贝叶斯,内容包括朴素贝叶斯分类器,垃圾邮件的分类,解析RSS源数据以及用朴素贝叶斯来分析不...
    99+
    2023-01-31
    实战 机器 python
  • python机器学习实战(一)
    原文链接:www.cnblogs.com/fydeblog/p/7140974.html 前言 这篇notebook是关于机器学习中监督学习的k近邻算法,将介绍2个实例,分别是使用k-近邻算法改进约会网站的效果和手写识别系统.操作系统:u...
    99+
    2023-01-31
    实战 机器 python
  • 如何使用 Python 进行机器学习?
    全套学习路线图、课程,机器学习工作流程如下。 Python+人工智能 入门: Python基础→Python数据挖掘中级: 机器学习进阶: NLP自然语言高级: OpenCV基础→深度学习 人工智能学习路线图2023版-黑马程序员人工智能技...
    99+
    2023-09-21
    python 机器学习 人工智能
  • Python机器学习及实践+从零开始通往
    内容简介   本书面向所有对机器学习与数据挖掘的实践及竞赛感兴趣的读者,从零开始,以Python编程语言为基础,在不涉及大量数学模型与复杂编程知识的前提下,逐步带领读者熟悉并且掌握当下最流行的机器学习、数据挖掘与自然语言处理工具...
    99+
    2023-01-31
    从零开始 机器 Python
  • Python机器学习库scikit-learn入门开发示例
    目录1.数据采集和标记2.特征选择3.数据清洗4.模型选择5.模型训练6.模型测试7.模型保存与加载8.实例数据采集和标记特征选择模型训练模型测试模型保存与加载1.数据采集和标记 先...
    99+
    2024-04-02
  • Python机器学习实战教程
    Python机器学习实战教程分享网盘地址——https://pan.baidu.com/s/1miIb4og 密码: wtiw课程真心不错,分享给大家机器学习(Machine Learning, ML)是一门多领域交叉学科,涉及概率论、统计...
    99+
    2023-01-31
    实战 机器 教程
  • 如何开始入门机器学习
    这篇文章主要介绍“如何开始入门机器学习”,在日常操作中,相信很多人在如何开始入门机器学习问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何开始入门机器学习”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!为什...
    99+
    2023-06-27
  • Python DPED机器学习怎么实现照片美化
    这篇文章主要介绍“Python DPED机器学习怎么实现照片美化”,在日常操作中,相信很多人在Python DPED机器学习怎么实现照片美化问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”P...
    99+
    2023-06-21
  • Python机器学习之决策树
    目录一、要求二、原理三、信息增益的计算方法四、实现过程五、程序六、遇到的问题一、要求 二、原理 决策树是一种类似于流程图的结构,其中每个内部节点代表一个属性上的“测试”,每个分支代...
    99+
    2024-04-02
  • python机器学习sklearn怎么实现识别数字
    这篇文章主要介绍了python机器学习sklearn怎么实现识别数字的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python机器学习sklearn怎么实现识别数字文章都会有所收获,下面我们一起来看看吧。数据处...
    99+
    2023-06-29
  • Python机器学习k-近邻算法怎么实现
    这篇文章主要介绍“Python机器学习k-近邻算法怎么实现”,在日常操作中,相信很多人在Python机器学习k-近邻算法怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python机器学习k-近邻算法怎...
    99+
    2023-06-21
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作