还剩31页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
数据分析Python欢迎来到Python数据分析课程在这个全面的课程中,我们将探索如何使用Python强大的库和工具进行数据分析从基础知识到高级技术,本课程将帮助您掌握数据处理、可视化和分析的关键技能无论您是数据科学初学者还是希望提升技能的专业人士,本课程都将为您提供实用的知识和技能,使您能够从复杂的数据集中提取有意义的见解让我们开始这段数据分析的学习之旅!课程概述1课程目标2学习内容本课程旨在帮助学生掌握使用课程内容涵盖Python基础回Python进行数据分析的核心顾、NumPy和Pandas库的使技能通过系统学习,您将能用、数据可视化技术、统计分够独立处理各类数据集,进行析方法以及机器学习基础我数据清洗、转换、分析和可视们将通过实际项目和案例研究,化,并从数据中提取有价值的帮助您将学到的知识应用到实信息和洞察际问题中3先修知识学习本课程前,建议您具备基本的Python编程知识,了解基础的编程概念如变量、函数、循环和条件语句具备基础统计学知识将有助于更好地理解课程内容,但不是必须的数据分析简介什么是数据分析数据分析的重要性Python在数据分析中的优势数据分析是检查、清洗、转换和建模数据在当今信息爆炸的时代,数据分析变得越Python因其简洁的语法、丰富的库和强的过程,目的是发现有用信息、得出结论来越重要企业利用数据分析来优化运营、大的生态系统而成为数据分析的首选工具并支持决策它涉及多种技术和方法,从提高效率、了解客户需求并做出数据驱动NumPy、Pandas、Matplotlib等库提简单的描述性统计到复杂的预测模型,帮的决策科研人员利用数据分析来验证假供了强大的数据处理和可视化功能,而助我们理解数据背后的模式和趋势设、发现规律并推动科学进步scikit-learn库则使机器学习变得简单易用环境搭建PythonJupyter Notebook使用创建虚拟环境Jupyter Notebook是一个交互式计算环境,Anaconda安装使用命令conda create-n dataanalysis非常适合数据分析工作在激活的环境中,输Anaconda是最流行的Python数据科学平台,python=
3.8创建一个名为dataanalysis的入jupyter notebook命令启动Jupyter它包含了数据科学常用的Python库和工具访Python
3.8环境虚拟环境可以隔离不同项目它允许您在浏览器中编写和执行代码,同时添问Anaconda官网下载适合您操作系统的安装的依赖,避免包冲突问题创建后,使用加富文本说明,是数据分析和教学的理想工具包,按照指引完成安装Anaconda提供了便conda activatedataanalysis命令激活环捷的包管理和环境管理功能,让您可以轻松管境理不同的Python环境基础回顾Python变量和数据类型条件语句和循环Python中的主要数据类型包括整条件语句if-elif-else用于根据数int、浮点数float、字符串不同条件执行不同代码循环结str、布尔值bool、列表构包括for循环和while循环,用list、元组tuple和字典dict于重复执行代码块这些控制流了解这些基本类型的特性和操作结构在数据处理中经常使用,例对于数据分析至关重要例如,如遍历数据集、筛选数据或执行列表用于存储有序集合,而字典条件转换则用于存储键值对函数定义函数是可重用的代码块,通过def关键字定义它们接受输入参数,执行操作,并返回结果在数据分析中,自定义函数可以帮助模块化代码,提高代码可读性和可维护性,同时避免代码重复库介绍NumPy1NumPy的重要性NumPy(Numerical Python)是Python科学计算的基础库,提供了强大的多维数组对象和各种派生对象(如掩码数组和矩阵)它为数据分析提供了高效的数值计算功能,是许多其他科学计算库(如Pandas、SciPy、Matplotlib等)的基础核心功能2NumPy的核心是ndarray(N维数组)对象,它比Python原生列表更高效NumPy提供了大量用于数组操作的函数,包括数学运算、形状操作、排序、选择、线性代数、统计操作等这些功能使数据处理变得更快更简单安装和导入3如果您使用Anaconda,NumPy已预装否则,可以通过pip安装pipinstall numpy在Python脚本中,通常使用如下方式导入NumPy importnumpyas np,这样可以使用简短的np前缀来调用NumPy的函数和方法数组操作NumPy创建数组数组索引数组切片NumPy提供多种方式创NumPy数组支持基于索NumPy数组可以使用切建数组np.array可引的访问,从0开始对片操作获取子数组,格以从Python列表或元组于多维数组,可以使用式为start:stop:step创建数组;np.zeros、逗号分隔的索引列表访例如,array[0:5:2]获np.ones和np.full问特定元素,如取从索引0开始,到索引分别创建填充零、一或array[1,2]负索引从5之前,步长为2的元素指定值的数组;数组末尾开始计数,如多维数组可以在每个维np.arange和array[-1]表示最后一个度上使用切片,如np.linspace生成等元素array[0:2,1:3]间隔的数值序列;np.random.random创建随机数组数学运算NumPyNumPy提供了丰富的数学运算功能基本运算包括加减乘除(+、-、*、/)、幂运算(**)等,这些运算都是元素级的,即对数组中的每个元素分别执行操作NumPy还支持矩阵乘法(np.dot或@运算符)统计函数方面,NumPy提供了均值(np.mean)、中位数(np.median)、标准差(np.std)、方差(np.var)、最小值和最大值(np.min、np.max)等常用统计量计算函数这些函数可以沿指定轴计算,也可以计算整个数组的统计量库介绍Pandas数据处理数据结构强大的数据清洗、转换和分析功能2Pandas提供Series和DataFrame两种主要1数据结构数据导入导出支持多种格式的数据读写35性能优化时间序列高效的内存使用和运算性能4专门的时间序列数据处理功能Pandas是建立在NumPy之上的数据分析库,专为处理表格和时间序列数据而设计它提供了强大而灵活的数据结构,使数据清洗和分析变得更加简单Pandas是数据科学工作流中不可或缺的工具安装Pandas可以通过pip命令pip install pandas,或通过conda condainstallpandas在Python脚本中,通常使用约定的导入方式import pandasas pd,这样可以使用简短的pd前缀来调用Pandas的功能数据结构Pandas Series什么是SeriesSeries是Pandas中的一维标记数组,类似于带有标签的NumPy数组它由两个数组组成一个用于数据,一个用于索引(标签)这种结构使得Series既能像数组那样高效操作,又能像字典那样通过标签访问数据创建Series可以从列表、NumPy数组或字典创建Series pd.Series[1,2,3]创建一个带有默认整数索引的Series;pd.Series[1,2,3],index=[a,b,c]创建一个带有自定义索引的Series;pd.Series{a:1,b:2,c:3}从字典创建SeriesSeries操作Series支持多种操作,包括索引访问(series[a]或series.a)、切片操作(series[a:c])、算术运算(加减乘除)、统计函数(series.mean、series.max等)以及许多其他方法,如series.value_counts用于计数和series.sort_values用于排序数据结构Pandas DataFrame创建方式代码示例说明从字典创建pd.DataFrame{A:[1,2],B:[3,4]}字典的键作为列名,值作为列数据从数组创建pd.DataFramenp.random.randn2,3创建2行3列的随机数DataFrame从Series创建pd.DataFrame{A:series1,B:series2}多个Series组合成一个DataFrame从CSV文件创建pd.read_csvdata.csv从CSV文件导入数据创建DataFrameDataFrame是Pandas中最常用的数据结构,它是一个二维标记数据结构,类似于Excel表格或SQL表DataFrame由行索引和列标签组成,可以看作是由多个共享相同索引的Series组成的字典DataFrame支持丰富的操作,包括选择列(df[A]或df.A)、选择行(df.loc[index]或df.iloc
[0])、条件筛选(df[df.A0])、添加或删除列(df[C]=values或del df[C])、排序(df.sort_valuesA)和聚合(df.groupbyA.sum)等数据导入与导出读取CSV文件读取Excel文件数据导出使用pd.read_csv函数使用pd.read_excel函Pandas提供多种导出函可以轻松读取CSV文件数可以读取Excel文件数,如to_csv导出为这个函数支持多种参数,需要先安装openpyxl或CSV,to_excel导出为如delimiter指定分隔符,xlrd库可以指定Excel,to_sql导出到header指定列名行,sheet_name参数读取特SQL数据库,to_jsonindex_col设置索引列,定工作表,如导出为JSON等例如usecols选择需要的列,sheet_name=Sheet1df.to_csvoutput.csv,skiprows跳过特定行,或sheet_name=0其index=False将数据导出nrows读取指定行数等他参数与read_csv类为CSV文件而不包含索引例如df=似例如df=列pd.read_csvdata.csv pd.read_exceldata.x,encoding=utf-8lsx,sheet_name=数据数据清洗处理缺失值删除重复数据异常值处理缺失值是数据分析中常见的问题重复数据会影响分析结果的准确性使用异常值可能是数据错误,也可能是重要的Pandas使用NaN(Not aNumber)表duplicated可以检测重复行,返回布尔极端情况可以使用描述性统计示缺失值可以使用isnull或isna检Series,标识每行是否是重复的使用(describe)和箱线图等可视化方法检测缺失值,dropna删除包含缺失值的drop_duplicates可以删除重复行,保测异常值处理方法包括删除(对于明显行或列,fillna填充缺失值例如,留第一次出现的行可以指定subset参错误的数据)、替换(如用中位数或截断)df.fillna0将所有缺失值替换为0,数只考虑特定列的重复例如,或保留(如果它们代表真实情况)例如,df.fillnamethod=ffill使用前向填充,df.drop_duplicatessubset=[A,B],df[df.Adf.A.quantile
0.95df.fillnadf.mean使用均值填充keep=last仅基于A和B列判断重复,并df.Adf.A.quantile
0.05]可以过滤保留最后出现的行掉5%的极端值数据转换数据标准化和归一化数据类型转换在许多数据分析和机器学习任务中,需要对数据进重命名列正确的数据类型对分析至关重要使用astype行标准化或归一化常见方法包括最小-最大缩放在数据分析过程中,我们经常需要重命名列以使其方法可以将列转换为特定类型,如(归一化到[0,1]区间)和Z-score标准化(转换更有意义或更容易理解Pandas提供了df[A].astypeint64将A列转换为整数对于为均值为0,标准差为1的分布)例如,df-rename方法来重命名列和索引例如,日期时间,可以使用pd.to_datetime函数,如df.min/df.max-df.min进行最小-最df.renamecolumns={old_name:pd.to_datetimedf[date]Pandas也提供大缩放,df-df.mean/df.std进行Z-new_name}将名为old_name的列重命名为了自动类型推断,如pd.read_csvfile.csv,score标准化new_name也可以使用df.columns=[col1,dtype={A:float64}col2,...]直接重新定义所有列名数据聚合与分组分组操作1使用groupby按一个或多个列进行分组聚合函数应用2对分组后的数据应用聚合函数结果处理3处理和分析聚合结果Pandas中的groupby操作是数据分析中的重要工具,它允许按照一个或多个条件将数据分组,然后对每个组应用聚合函数基本语法是df.groupbycolumn_name,可以指定多个列进行分组,如df.groupby[A,B]常用的聚合函数包括sum、mean、count、min、max、std等也可以使用agg方法同时应用多个聚合函数,如df.groupbyA.agg{B:[mean,sum],C:count}此外,transform方法可以应用函数并保持原始数据的形状,而apply方法则可以应用任意自定义函数数据合并merge操作concat操作merge函数类似于SQL中的join操作,concat函数用于沿轴连接多个用于基于公共列合并两个DataFrame DataFrame或Series默认沿行方向可以指定不同的合并方式,如inner(内(axis=0)连接,也可以沿列方向连接,默认)、outer(外连接)、left(axis=1)连接例如,(左连接)和right(右连接)例如,pd.concat[df1,df2]沿行方向连接pd.mergedf1,df2,on=key基于df1和df2,pd.concat[df1,df2],key列进行内连接,pd.mergedf1,axis=1沿列方向连接可以通过join参df2,left_on=key1,right_on=key2数指定连接方式(inner或outer),在不同名称的列上合并通过keys参数添加多级索引区分来源join方法DataFrame的join方法是merge的简化版本,专门用于基于索引合并它默认执行左连接,可以通过how参数修改例如,df
1.joindf2基于索引合并df1和df2,相当于pd.mergedf1,df2,left_index=True,right_index=True,how=left这是处理索引对齐数据的便捷方法时间序列数据处理日期时间索引1Pandas提供强大的时间序列功能,核心是DatetimeIndex类可以通过pd.date_range创建日期范围,如pd.date_rangestart=2021-01-01,时间序列操作2periods=10,freq=D创建10天的日期序列将日期列设为索引(df.set_indexdate)后,可以使用df
[2021]、df[2021-01]等直观的方对于时间序列数据,Pandas提供了特殊的方法,如shift用于移动数据(计算式选择特定时期的数据变化率时有用),diff计算差值,pct_change计算百分比变化还可以使用resample进行重采样,如df.resampleM.mean将数据按月重采样并计算平均值重采样和频率转换3重采样是改变时间序列频率的过程上采样(增加频率)如从月到日,需要插值;下采样(降低频率)如从日到月,需要聚合例如,df.resampleD.ffill将数据上采样到每日并使用前向填充,df.resampleM.sum将数据下采样到每月并求和库介绍Matplotlib数据可视化1创建各类图表展示数据见解图表定制2控制颜色、样式、布局等交互功能3创建交互式图表及动画导出能力4保存为多种格式如PNG、PDFMatplotlib是Python中最流行的数据可视化库,提供了类似MATLAB的绘图API它能创建静态、动态或交互式的可视化图表,是数据分析中不可或缺的工具Matplotlib的核心是面向对象的绘图API,但也提供了更简单的pyplot接口,使绘图变得更加直观安装Matplotlib可以通过pip pipinstall matplotlib,或通过conda condainstall matplotlib在Python中,通常使用以下方式导入importmatplotlib.pyplot asplt对于Jupyter Notebook,通常添加%matplotlib inline魔法命令以在单元格内显示图表基本图表绘制线图柱状图饼图线图是展示连续数据变化趋势的理想选择柱状图适用于比较不同类别的数值使用饼图用于展示部分与整体的关系使用使用plt.plotx,y创建基本线图,其中x和plt.barx,height创建垂直柱状图,其中plt.piesizes创建饼图,其中sizes是各y是数据数组可以通过color、linestyle、x是类别位置,height是对应高度可以通部分的数值可以通过labels参数添加标签,linewidth等参数自定义线条样式例如,过width、color、alpha等参数自定义柱通过autopct参数显示百分比,如plt.plotx,y,r--,linewidth=2创建红色子对于水平柱状图,使用plt.barhy,plt.piesizes,labels=labels,虚线多次调用plot可以在同一图表中绘widthplt.barx,height1,autopct=%
1.1f%%explode参数可以制多条线bottom=height2可以创建堆叠柱状图突出某些部分,startangle参数控制起始角度高级图表绘制散点图是展示两个变量之间关系的有效方式使用plt.scatterx,y创建基本散点图,其中x和y是数据点的坐标可以通过s参数控制点的大小,c参数控制颜色(可以是单一颜色或映射到数值的颜色图),alpha参数控制透明度例如,plt.scatterx,y,s=area,c=colors,alpha=
0.5创建大小和颜色变化的散点图箱线图(Box Plot)展示数据分布的五数概要(最小值、第一四分位数、中位数、第三四分位数、最大值)及离群点使用plt.boxplotdata创建箱线图,data可以是单个数组或多个数组的列表notch参数可以添加置信区间凹槽,vert=False参数创建水平箱线图例如,plt.boxplot[data1,data2],labels=[Group1,Group2]比较两组数据的分布自定义图表样式1颜色和样式设置2添加标题和标签Matplotlib提供多种方式自定义图表清晰的标题和标签是好图表的关键颜色和样式可以直接在绘图函数中使用plt.title主标题添加图表标题,设置参数,如plt.plotx,y,plt.xlabelx轴标签和plt.ylabelycolor=red,linestyle=--,轴标签添加坐标轴标签这些函数都linewidth=2也可以使用支持fontsize、fontweight、colorplt.rcParams设置全局样式,如等参数进行样式自定义对于多子图,plt.rcParams[lines.linewidth]=可以使用ax.set_title、2内置的样式表ax.set_xlabel等方法(plt.style.useggplot)可以一次性应用一组样式设置3图例和注释图例帮助读者理解图表中的不同元素使用plt.legend添加图例,可以通过loc参数控制位置(如best、upper right等)注释可以使用plt.annotate添加,它支持文本定位、箭头样式等丰富选项例如,plt.annotate重要点,xy=x,y,xytext=x+1,y+1,arrowprops=dictfacecolor=black,shrink=
0.05多子图绘制subplot使用plt.subplotnrows,ncols,index函数可以创建规则的子图网格例如,plt.subplot2,3,1在2行3列的布局中创建第1个子图(从左上角开始计数)每次调用subplot后,后续的绘图命令将作用于当前子图plt.subplots函数可以一次性创建整个子图网格,返回图形对象和轴对象数组GridSpec使用对于需要不规则布局的情况,可以使用GridSpec例如,gs=plt.GridSpec3,3创建3×3网格,然后可以通过切片指定特定区域,如ax1=plt.subplotgs[0,:]创建跨越第一行所有列的子图这提供了更灵活的布局控制组合图表多子图允许在一个图形中展示不同类型的可视化例如,可以在一个子图中展示原始数据的散点图,在另一个子图中展示相同数据的直方图,在第三个子图中展示箱线图这种组合可以提供数据的多角度视图,帮助更全面地理解数据特征库介绍Seaborn统计功能整合Seaborn与统计分析紧密结合,可以自动计算并可视化置信区间、回归线等统计信息这使得从探基于Matplotlib的增强索数据到呈现结果的过程更加流畅,特别适合数据数据感知型API科学工作流程Seaborn构建在Matplotlib之上,提供了更高级Seaborn的函数通常直接接受pandas的API,使创建美观且信息丰富的统计图表变得简DataFrame,并利用其结构(如分类变量)自动单它默认使用更现代、更吸引人的视觉样式,同创建有意义的可视化这种数据感知的特性减少时保留了与Matplotlib的完全兼容性了代码量,提高了可视化效率213安装Seaborn可以通过pip pipinstall seaborn,或conda condainstall seaborn在Python中,通常使用以下方式导入import seabornassnsSeaborn提供了多种主题风格,可以通过sns.set_theme或sns.set_style设置统计图表Seaborn分布图关系图回归图Seaborn提供多种可视化数据分布的方法关系图用于探索变量间的关系回归图通过拟合统计模型显示变量关系histplot创建直方图,显示单变量分布;scatterplot创建散点图;lineplot regplot创建简单的回归图;lmplotkdeplot创建核密度估计图,显示平滑创建线图,适合时间序列;relplot是高添加更多功能,包括分面和强大的模型规的分布;displot是高级接口,可以灵级接口,可以创建各种关系图并自动添加范例如,sns.lmplotdata=df,x=x,活组合这些方法例如,分面例如,sns.relplotdata=df,y=y,hue=category,col=group创sns.displotdata=df,x=value,x=x,y=y,hue=category,建按组分面、按类别着色的回归图,自动hue=category,kind=kde创建按类style=group,kind=scatter创建彩拟合回归线并显示置信区间别分组的核密度估计图色多样式散点图数据可视化最佳实践选择合适的图表类注重可读性和清晰避免常见陷阱型度避免常见的可视化错误,根据数据特点和分析目好的数据可视化应该易如误导性的轴(如不从的选择适当的可视化类于理解使用适当的字零开始的截断轴)、不型至关重要例如,时体大小和颜色对比度,适当的颜色使用(如难间序列数据适合线图,确保图表元素清晰可辨以区分的色彩或对色盲分类比较适合柱状图或添加明确的标题、轴标不友好的配色)、过度箱线图,部分与整体关签和图例避免过度装拥挤的图表、3D效果导系适合饼图或堆叠柱状饰和不必要的图表垃圾致的视觉扭曲等始终图,相关性分析适合散对于复杂的图表,考考虑你的受众,确保可点图或热图了解各类虑添加注释或解释文本视化真实地反映数据本图表的优缺点和适用场帮助读者理解要点质,而不是扭曲或夸大景,能够更有效地传达某些方面数据洞察描述性统计集中趋势度量离散趋势度量分布形状集中趋势度量描述数据的中心位置均离散趋势度量描述数据的分散程度范围描述分布形状的统计量帮助理解数据分布值(平均值)是所有值的算术平均,受极是最大值减最小值;方差是各值与均值差特性偏度衡量分布的不对称性,正偏表端值影响大;中位数是排序后的中间值,的平方的平均值;标准差是方差的平方根,示有右尾,负偏表示有左尾;峰度衡量分对极端值不敏感;众数是出现频率最高的以原始数据单位表示分散程度;四分位距布的尖峰程度,高峰度表示分布有重尾值,适用于分类数据在Pandas中,可以是第三四分位数与第一四分位数的差,反在SciPy中,可以使用scipy.stats.skew使用df.mean、df.median和映中间50%数据的分散程度在Pandas中,和scipy.stats.kurtosis计算这些统计df.mode计算这些统计量选择哪种度可以使用df.var、df.std计算方差和量正态分布的偏度为0,峰度为3量取决于数据分布和分析目的标准差相关性分析年龄收入支出储蓄相关性分析用于衡量两个变量之间的线性关系强度最常用的相关系数是皮尔逊相关系数Pearsons r,其值介于-1和1之间1表示完美正相关,-1表示完美负相关,0表示无线性相关在Pandas中,可以使用df.corr计算所有数值列之间的相关系数矩阵相关性热图是可视化相关矩阵的有效方式使用Seaborn的heatmap函数可以轻松创建热图sns.heatmapdf.corr,annot=True,cmap=coolwarmannot=True显示数值,cmap指定颜色映射需要注意的是,相关性不等于因果关系,两个变量的高相关可能是由第三个变量导致的,或者纯属巧合假设检验t检验卡方检验方差分析ANOVAt检验用于比较均值是否有显著差异单样本t卡方检验用于分析分类变量之间的关系卡方方差分析用于比较两个以上组的均值是否有显检验比较一个样本与已知均值;双样本t检验比独立性检验评估两个分类变量是否相互独立;著差异一元方差分析考虑一个自变量的影响;较两个独立样本的均值;配对t检验比较相关样卡方拟合优度检验评估观察频率是否与理论分双因素方差分析考虑两个自变量及其交互作用本(如前后测试)的均值差异使用布一致使用使用scipy.stats.f_oneway可以执行一元scipy.stats模块可以进行这些检验,如scipy.stats.chi2_contingency可以执行方差分析,它接受多个样本作为输入,返回F统stats.ttest_indsample1,sample2进行卡方独立性检验,它接受列联表作为输入,返计量和p值p值小于显著性水平(通常为
0.05)独立双样本t检验,返回t统计量和p值回卡方统计量、p值、自由度和期望频率表示组间有显著差异回归分析基础线性回归原理线性回归假设因变量与自变量之间存在线性关系,试图找到使误差平方和最小的线性函数单变量线性回归只有一个自变量,形式为y=β0+β1x;多变量线性回归有多个自变量,形式为y=β0+β1x1+β2x2+...+βnxn参数β0是截距,β1,β2等是各自变量的系数实现线性回归在Python中,可以使用scikit-learn库实现线性回归基本步骤是导入模型(from sklearn.linear_model importLinearRegression);创建模型实例(model=LinearRegression);使用训练数据拟合模型(model.fitX_train,y_train);用模型进行预测(y_pred=model.predictX_test)拟合后,可以通过model.coef_和model.intercept_获取系数和截距模型评估评估回归模型性能的常用指标包括均方误差MSE衡量预测值与实际值差异的平方平均;决定系数R²表示模型解释的因变量方差比例,值介于0和1之间,越接近1表示模型拟合越好;调整R²考虑了自变量数量,适用于比较不同复杂度的模型;平均绝对误差MAE衡量预测与实际的平均绝对差异库介绍scikit-learn数据预处理特征选择1提供缩放、标准化、编码等工具实现自动特征筛选和降维算法2模型评估模型实现43提供交叉验证和性能评估工具包含各类机器学习算法的实现scikit-learn(简称sklearn)是Python中最流行的机器学习库,提供了简单高效的工具,用于数据挖掘和数据分析它构建在NumPy、SciPy和Matplotlib之上,具有一致的接口设计,使得各种算法的使用方式非常相似,易于学习和应用安装scikit-learn可以通过pip pipinstall scikit-learn,或conda condainstall scikit-learn在Python中导入通常使用from sklearnimport具体模块,如from sklearn.linear_model importLinearRegressionscikit-learn的主要模块包括preprocessing(数据预处理)、model_selection(模型选择)、linear_model(线性模型)、ensemble(集成方法)、metrics(评估指标)等数据预处理特征缩放独热编码特征缩放是使不同量纲的特征具有可比性的过程独热编码(One-Hot Encoding)用于处理分类标准化(StandardScaler)将特征转换为均值变量,将每个类别转换为一个二进制特征例如,为
0、标准差为1的分布;最小-最大缩放颜色特征(红/绿/蓝)转换为三个二进制特征(MinMaxScaler)将特征缩放到指定范围(默(是否红、是否绿、是否蓝)在scikit-learn认为[0,1]);稳健缩放(RobustScaler)使用中,可以使用OneHotEncoder类实现中位数和四分位距缩放,对异常值不敏感例如,encoder=OneHotEncoder、使用scaler=StandardScaler、encoder.fitX_categorical和X_encodedscaler.fitX_train和X_train_scaled==encoder.transformX_categoricalscaler.transformX_train标准化训练数据Pandas的get_dummies函数也可以实现类似功能缺失值处理机器学习算法通常无法处理缺失值scikit-learn提供了SimpleImputer类用于缺失值填充imputer=SimpleImputerstrategy=mean(使用均值填充)、imputer.fitX_train和X_train_imputed=imputer.transformX_train其他填充策略包括median(中位数)、most_frequent(众数)和constant(常数)更高级的方法包括使用KNN或回归模型基于其他特征预测缺失值特征选择过滤法过滤法根据特征自身的统计特性选择特征,不考虑具体的学习算法常用方法包括方差阈值法(删除方差较小的特征)、互信息法(评估特征与目标变量之间的依赖性)和卡方检验(用于分类问题)例如,使用SelectKBest类和chi2评分函数选择k个最佳特征SelectKBestchi2,k=
10.fit_transformX,y包装法包装法使用学习算法的性能作为特征子集的评价标准如递归特征消除(RFE)从完整特征集开始,递归地去除最不重要的特征,直到达到指定数量例如,RFEestimator=SVC,n_features_to_select=
5.fit_transformX,y选择5个最重要特征这种方法计算密集但通常效果很好嵌入法嵌入法在模型训练过程中评估特征重要性如L1正则化(Lasso)可以使不重要特征的系数变为零,从而实现特征选择树模型的特征重要性也可用于选择特征scikit-learn的SelectFromModel类可以基于任何具有feature_importances_或coef_属性的估计器选择特征SelectFromModelLassoCV.fit_transformX,y分类算法决策树是一种直观的分类算法,通过一系列问题将数据分割为子集其优点是易于理解和可视化、可以处理分类和数值特征,不需要特征缩放在scikit-learn中,可以使用DecisionTreeClassifier类实现,如树的深度、节点分裂的最小样本数等可以通过参数调整树的可视化可以使用graphviz库随机森林是一种集成学习方法,由多个决策树组成,每个树使用随机选择的特征和样本子集训练预测时取所有树的多数投票结果其优点是减少过拟合、提高准确率和稳定性,可以评估特征重要性在scikit-learn中,使用RandomForestClassifier类实现,关键参数包括树的数量、最大特征数和最大深度等通过随机性和集成,随机森林通常比单个决策树表现更好。
个人认证
优秀文档
获得点赞 0