学习嵌入式AI(TInyML),只需掌握这点python基础即可!
大家好我是贺老师嵌入式 AI 工程师《嵌入式AI让单片机学会思考》主理人专注AI在MCU上的落地实践。本文中重点关注学习嵌入式AI需要掌握的Python编程语言的基础知识包括基本语法、NumPy库的使用以及数据处理的基本概念。这些知识对于后续学习TinyML至关重要。Python是机器学习领域最流行的编程语言而NumPy是Python科学计算的核心库。掌握这些基础知识将帮助我们更好地理解和实现TinyML模型。Python语法基础变量和数据类型Python是一种动态类型语言变量不需要显式声明类型。# 基本数据类型示例 # 整数 age 15 # 浮点数 height 1.75 # 字符串 name 小明 # 布尔值 is_student True # 列表 fruits [苹果, 香蕉, 橙子] # 字典 student {name: 小红, age: 14, grade: 8}控制结构Python使用缩进来定义代码块而不是大括号# 条件语句示例 score 85 if score 90: print(优秀) elif score 80: print(良好) elif score 70: print(中等) else: print(需要努力) # 循环语句示例 # for循环 for i in range(5): print(f这是第{i1}次循环) # while循环 count 0 while count 3: print(f计数: {count}) count 1函数定义函数是组织代码的重要方式可以提高代码的可读性和复用性。# 函数定义示例 def greet(name): 这是一个简单的问候函数 return f你好, {name}! def calculate_area(length, width): 计算矩形面积 area length * width return area # 调用函数 message greet(李华) print(message) rectangle_area calculate_area(5, 3) print(f矩形面积: {rectangle_area})NumPy基础什么是NumPyNumPy是Python的一个开源数值计算库提供了强大的多维数组对象和用于处理这些数组的函数。在TinyML中NumPy常用于数据预处理和特征工程实现数学运算和线性代数操作与机器学习框架如TensorFlow Lite交互NumPy数组NumPy的核心是ndarrayN维数组对象。import numpy as np # 创建数组 arr1 np.array([1, 2, 3, 4, 5]) # 一维数组 arr2 np.array([[1, 2, 3], [4, 5, 6]]) # 二维数组 print(一维数组:, arr1) print(二维数组:) print(arr2) print(数组形状:, arr2.shape) print(数组维度:, arr2.ndim) print(数据类型:, arr2.dtype)数组操作NumPy提供了丰富的数组操作函数# 数组运算 a np.array([1, 2, 3]) b np.array([4, 5, 6]) print(a b , a b) # 元素相加 print(a * b , a * b) # 元素相乘 print(a.dot(b) , a.dot(b)) # 点积 # 常用函数 arr np.array([1, 2, 3, 4, 5]) print(最大值:, np.max(arr)) print(最小值:, np.min(arr)) print(平均值:, np.mean(arr)) print(标准差:, np.std(arr)) print(总和:, np.sum(arr)) # 重塑数组 arr_reshape arr.reshape(5, 1) print(重塑后的数组:) print(arr_reshape)NumPy常用函数速查表函数描述示例np.array()创建数组np.array([1, 2, 3])np.zeros()创建全零数组np.zeros((3, 3))np.ones()创建全一数组np.ones((2, 4))np.arange()创建等差数组np.arange(0, 10, 2)np.reshape()改变数组形状arr.reshape(2, 3)np.concatenate()连接数组np.concatenate((a, b))np.sum()计算数组元素和np.sum(arr)np.mean()计算数组平均值np.mean(arr)np.std()计算数组标准差np.std(arr)数据处理基础数据加载与查看在TinyML项目中我们通常需要从各种来源加载数据。import numpy as np # 创建示例数据集 # 假设我们有一个包含学生成绩的数据集 # 列: [数学成绩, 语文成绩, 英语成绩, 总分] data np.array([ [85, 90, 88, 263], [92, 87, 95, 274], [78, 85, 80, 243], [65, 70, 75, 210], [95, 92, 98, 285] ]) print(数据集:) print(data) print(数据集形状:, data.shape) print(前3行数据:) print(data[:3]) print(数学成绩列:) print(data[:, 0])数据清洗数据清洗是数据处理的重要步骤包括处理缺失值、异常值等# 处理缺失值示例 # 假设我们的数据中有一些缺失值用NaN表示 data_with_nan np.array([ [85, 90, 88, 263], [92, np.nan, 95, np.nan], [78, 85, 80, 243], [np.nan, 70, 75, 210], [95, 92, 98, 285] ]) print(包含缺失值的数据:) print(data_with_nan) # 检查缺失值 print(缺失值位置:) print(np.isnan(data_with_nan)) # 填充缺失值使用列平均值 col_mean np.nanmean(data_with_nan, axis0) print(列平均值:, col_mean) # 用列平均值填充缺失值 for i in range(data_with_nan.shape[1]): data_with_nan[np.isnan(data_with_nan[:, i]), i] col_mean[i] print(填充后的数据:) print(data_with_nan)数据标准化数据标准化是将数据按比例缩放使之落入一个小的特定区间。# 数据标准化示例 # 使用之前的学生成绩数据 scores data[:, :3] # 只取前三列数学、语文、英语成绩 print(原始成绩数据:) print(scores) # 最小-最大标准化 min_vals np.min(scores, axis0) max_vals np.max(scores, axis0) normalized_scores (scores - min_vals) / (max_vals - min_vals) print(最小-最大标准化后的数据:) print(normalized_scores) # Z-score标准化 mean_vals np.mean(scores, axis0) std_vals np.std(scores, axis0) z_scores (scores - mean_vals) / std_vals print(Z-score标准化后的数据:) print(z_scores)因平台推荐规则变化多点赞和在看我们才能常出现在你的推送里。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2583979.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!