baicai 发表于 2023-10-17 16:56:23

人工智能时代为什么将 Python 称为第一语言?

人工智能时代为什么将 Python 称为第一语言?

cnfsonxxx 发表于 2023-10-17 16:57:13

Python的优势

关于Python有句比较有名的话:”人生苦短,我用Python。“

http://pic1.zhimg.com/v2-a476688226ee9b12ebd5e3eb8309d1f6_r.jpg?source=1940ef5c
最主要的原因,是因为Python简洁、可读性强,要实现同样功能,Python的代码量明显少于Java、C++等语言,意味着可以缩短开发周期,提升开发效率。
举几个直观的例子:

[*]文件读写:
Python:
with open("file.txt", "r") as file:
    content = file.read()
    print(content)Java:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class FileOperations {
    public static void main(String[] args) {
      try (BufferedReader reader = new BufferedReader(new FileReader("file.txt"))) {
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
      } catch (IOException e) {
            e.printStackTrace();
      }
    }
}C++:
#include <iostream>
#include <fstream>
#include <string>
int main() {
    std::ifstream file("file.txt");
    if (file.is_open()) {
      std::string line;
      while (std::getline(file, line)) {
            std::cout << line << std::endl;
      }
      file.close();
    } else {
      std::cout << "Unable to open file" << std::endl;
    }

    return 0;
}
在实现文件读写过程中,Python 使用了上下文管理器(Context Manager)来自动处理文件的打开和关闭,而 Java 和 C++ 需要使用更多的语句来完成同样的任务。
2.列表操作:
Python:
numbers =
squared_numbers =
print(squared_numbers)Java:
import java.util.ArrayList;
import java.util.List;

public class ListOperations {
    public static void main(String[] args) {
      List<Integer> numbers = new ArrayList<>();
      numbers.add(1);
      numbers.add(2);
      numbers.add(3);
      numbers.add(4);
      numbers.add(5);

      List<Integer> squaredNumbers = new ArrayList<>();
      for (int num : numbers) {
            squaredNumbers.add(num * num);
      }

      System.out.println(squaredNumbers);
    }
}C++:
#include <iostream>
#include <vector>
int main() {
    std::vector<int> numbers = {1, 2, 3, 4, 5};
    std::vector<int> squaredNumbers;

    for (int num : numbers) {
      squaredNumbers.push_back(num * num);
    }

    for (int num : squaredNumbers) {
      std::cout << num << " ";
    }
    std::cout << std::endl;

    return 0;
}
列表操作中,Python可以使用列表推导式(List Comprehension)来简洁地生成一个新的列表,而 Java 和 C++ 需要使用循环和额外的语句。
3.机器学习的线性回归案例:
Python:
import numpy as np
from sklearn.linear_model import LinearRegression

# 生成随机数据
X = np.array([, , , , ])
y = np.array()

# 创建线性回归模型
model = LinearRegression()

# 训练模型
model.fit(X, y)

# 预测
x_test = np.array([])
y_pred = model.predict(x_test)

print(y_pred)Java:
import org.apache.commons.math3.stat.regression.SimpleRegression;

public class LinearRegressionExample {
    public static void main(String[] args) {
      double[] X = {1, 2, 3, 4, 5};
      double[] y = {2, 4, 6, 8, 10};

      SimpleRegression model = new SimpleRegression();
      for (int i = 0; i < X.length; i++) {
            model.addData(X, y);
      }

      double x_test = 6;
      double y_pred = model.predict(x_test);

      System.out.println(y_pred);
    }
}C++:
#include <iostream>
#include <vector>
#include <cmath>
#include <numeric>
double linearRegression(const std::vector<double>& X, const std::vector<double>& y, double x_test) {
    double sumX = std::accumulate(X.begin(), X.end(), 0.0);
    double sumY = std::accumulate(y.begin(), y.end(), 0.0);
    double sumXY = 0.0;
    double sumX2 = 0.0;

    for (int i = 0; i < X.size(); i++) {
      sumXY += X * y;
      sumX2 += X * X;
    }

    double meanX = sumX / X.size();
    double meanY = sumY / y.size();

    double slope = (sumXY - X.size() * meanX * meanY) / (sumX2 - X.size() * meanX * meanX);
    double intercept = meanY - slope * meanX;

    return slope * x_test + intercept;
}

int main() {
    std::vector<double> X = {1, 2, 3, 4, 5};
    std::vector<double> y = {2, 4, 6, 8, 10};

    double x_test = 6;
    double y_pred = linearRegression(X, y, x_test);

    std::cout << y_pred << std::endl;

    return 0;
}
可以看出,Python 使用了 Scikit-learn 库提供的 LinearRegression 类来实现线性回归,更方便快捷。而 Java需要额外的循环操作来将数据添加进线性模型,C++ 则需要手动计算回归系数和截距。
当然,从运行效率的角度来说,Python的速度比Java、 C++慢。但人工智能有时需要的是快速构建模型并检验模型效果,使用Python可以明显减少开发时长。
除此之外,Python还有以下优点:

[*]Python易学易用,语法清晰,初学者能够更容易入门
[*]Python拥有丰富的第三方库和框架,包括NumPy、Pandas、Matplotlib、Scikit-Learn、TensorFlow和PyTorch等,这些库和框架封装了用于数据处理、数据可视化、特征工程、模型开发和深度学习的工具和函数,使得完成机器学习项目变得更加容易。
[*]Python有庞大的开发者社区,能找到丰富的机器学习的示例代码。社区中也有很多开源项目和贡献者,对机器学习工具进行不断改进和扩展。
[*]Python是一种跨平台语言,可以在多个操作系统上运行,这使得开发者可以轻松地在不同环境中共享代码和模型。
[*]Python支持大规模数据处理和分析,可以与Hadoop、Spark和云计算平台集成,使其在处理大规模数据集时表现出色。
如何学习Python

可见Python有很多优点,而如何学习Python呢?我认为可以分成Python基础知识和Python人工智能实践两部分。
Python基础知识的学习,非常推荐这本《Python编程:从入门到实践》。

http://pica.zhimg.com/v2-163188956e39f54f5f3c0dc78d235ebe_r.jpg?source=1940ef5c
这本书不要求有Python编程基础,包含基础知识和游戏、数据可视化、Web应用三个项目实战的部分,非常适合初学者。
对于Python基础知识,主要需要掌握:

[*]Python基本语法
[*]理解变量和数据类型
[*]掌握基本操作符、控制结构、函数
[*]掌握面向对象编程、模块(module)和库(package)
[*]掌握文件操作和异常处理方法
这些内容都可以从《Python编程:从入门到实践》这本书里学习到~学完之后可以根据上面列举的要点回忆巩固一下。
掌握了Python基础,就需要进一步结合人工智能的项目来进行实践。
人工智能是一个比较泛的计算机科学领域,旨在使计算机系统能够具备包括理解语言、解决问题、学习、感知环境、做出决策等人类智慧。它涵盖了多种技术和方法,包括专家系统、规则基础系统、机器学习、计算机视觉、自然语言处理等。
机器学习是其中一个比较重要的分支,以机器学习Python编程实践为例,重要的是要多看代码和多实践。
有以下几种方式接触到Python机器学习项目的代码:
1.去Kaggle(著名的在线数据科学竞赛平台和社区,它提供了真实的数据集和各类问题)的Code模块找到一些机器学习项目代码。比如下图是一个使用分布估计算法和深度神经网络来监测软件缺陷的项目代码,每一步的原因和运行结果都会展示在上面,便于理解。

http://picx.zhimg.com/v2-7b15ba0d1485d2abbd89c39df859ea26_r.jpg?source=1940ef5c
2.去Github(全球最大的代码开源社区之一)找一些Machine Learning为关键词的项目,直接看代码。这种方式找到的代码可能没有注释和背景说明,会有一定的理解难度。
3.去Python Sklearn、tensorflow、keras的官方文档上看。 比如sklearn库的官方文档就提供了比较丰富的示例。但这里面的示例可能会省去数据预处理、数据探查等机器学习项目必备的步骤,只涉及模型调用和训练过程的示例。

http://pic1.zhimg.com/v2-8aa67694bd2fa9d221db469692d93bf5_r.jpg?source=1940ef5c
4.去CSDN上也能检索到开发者分享的一些机器学习实践代码,比较适合英文阅读有困难的人群。不过代码可能不够全、不够新。
刚刚入门时,在看代码的过程中,我常常会遇到一些看不懂的地方,需要去各种地方查阅资料,一研究就是大半天。
而现在,AI大模型可以帮我们快速解读代码。比如我对上述从Kaggle中找到的监测软件缺陷的异常值清洗代码进行提问:

http://picx.zhimg.com/v2-2b30eff706b35383ad5d9f9395a1ef64_r.jpg?source=1940ef5c
有了大模型工具,可以快速提升我们看代码和学习代码的效率。推荐这门「知乎知学堂」联合「AGI课堂」官方发布的:AI大模型免费公开课。
在两天的课程中,可以熟悉大模型的前沿进展、更好的和大模型交互,最终让大模型为我们的学习和工作赋能。添加助教微信还可以领取AI 大模型资料包、好用的AI工具网址等资源,帮助你提升学习效率~
可以用一到两周的时间,找一些基础的项目(Kaggle Code模块可以用Beginner筛选),只看别人的代码,多多理解学习别人的分析思路,然后在本地或线上运行,体验编译出结果的快乐。

http://pic1.zhimg.com/v2-476977f8bc7574de9291fe69689a9f2c_r.jpg?source=1940ef5c
接下来,我们要开始自己实战了。仍然是用之前找的项目,尝试不看其他人的逻辑,自己应用其他机器学习算法跑一遍整个流程。
遇到不会的地方,可以自己查阅Python官方文档,或者向AI大模型工具进行提问。
这样,你就基本入门了几个机器学习项目。
当你积累得足够多的时候,之后可以参加一些实时竞赛,竞赛中整个项目完全由自己实现。这样可以丰富自己的项目经历,如果有幸获取了名次,也能提升个人影响力。
Life is short, I use Python!
<hr/>我是等壹,毕业于上海交大,现就职于某大厂当码农。是个热爱技术,喜欢看书、旅游、看动漫的妹子~
我会定期分享技术、学习等干货,欢迎关注!
<a href="http://www.zhihu.com/people/shi-xing-deng-yi" data-draft-node="block" data-draft-type="link-card" data-image="http://pic4.zhimg.com/v2-1f1591478db529f73e81548973fdad87_ipico.jpg" data-image-width="1276" data-image-height="1276" class="internal">等壹

indianjohn 发表于 2023-10-17 16:57:50

因为主要的AI框架 数据分析库都是Python的

muqinmuqin 发表于 2023-10-17 16:58:50

人生苦短,Python是岸。
近年来随着人工智能和机器学习的发展,Python大火,但很多小伙伴不知道的是,其实Python并不是一门年轻的语言,早在1991年它就出现了。
这门编程语言已经发展了多年,在可预见的未来也会继续保持它的地位。
1989年,Guido van Rossum在参加设计ABC(一种教学语言)后,萌生了想要开发一种新语言的想法。
1989年他创立了Python语言。1991年初Python公布了第一个公开发行版。
Python有意思的地方在于,他是一个人的工作成果,而大多数其他流行的编程语言都是由雇佣了大量专业人员的大公司开发和发布的。Python是个例外!
当然,并不是Python的所有组件都是由 van Rossum独自一人开发的,它是一个开源项目,成千上万的人都对Python的开发做出了贡献。
随着国家科教兴国战略和社会职业需求方向的转变,编程教育,已经越来越受到家长的重视,大家充满热情地一头扎进少儿编程领域,开始给孩子寻找一条新出路。
当孩子学了一段时间的编程后,家长就需要为他们以后的发展做考虑了。是的,就是到了需要让他们接触代码类编程语言的时候。那么问题就来了,面对那么多的代码类编程语言,家长总会有一种“该学啥?”“选哪种?”“什么以后有用?”的茫然感。
在这些编程语言中,有的简单有趣,比如Scratch;有的功能强大,比如C++、PHP;有的应用广泛,如Python、Javascript。

Python是一种跨平台的计算机程序设计语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。
Python是一种说人话的语言,所谓“说人话”,是指这种语言,开发者不需要关注底层,语法简单直观,表达形式一致。专业的说就是它更具有可读性和简单性,并且是学习如何解决问题和建立编程背后逻辑推理的好方法。
现在人工智能的时代最好的就是现在的Python编程语言将会是未来的发展非常不错的一个时代,当然了现在我也是将2我自己过来人的学习经历和经验给整理学习整理成了内容,如果零基础小白想要学习Python的话可以直接学习了。
尚学堂怎么样 这家培训机构??

leon30802002 发表于 2023-10-17 16:59:36

一是因为很多Python程序员不是专业的。不知道 PyTorch 底层是 C++,是 libtorch。不知道Python的主要功能之一是脚本化、动态化 C/C++。Python最主流的实现 CPython 本身就是C/C++写的。
二是因为Python门槛低,嗓门大。

asdjkl 发表于 2023-10-17 17:00:28

主要是因为python是解释性语言,因而是开源的便于大家把程序抄来抄去。
页: [1]
查看完整版本: 人工智能时代为什么将 Python 称为第一语言?