pycharm中sklearn和pandas使用

钮瀚
2023-12-01

一、pycharm设置

1.实用插件:

1)rainbow brackets:彩色括号
2)material theme UI:外观主题
3)idea vim:vim风格编辑器
4)中文语言包
5)csv:轻量csv文件编辑器
6)Translation:中文翻译

2.启动故障:

pycharmjava.util.concurrent.CompletionException: java.net.BindException: Address already in use: bind

解决方法1:重启
解决方法2:管理员打开cmd并执行

net stop winnat
net start winnat

二、sklearn使用

1.文档及使用帮助

英文文档
中文文档
stack overflow对应版块

2.全局设置

randomstate参数不在各函数中指定,在main函数中使用

np.random.seed(42)#设置全局伪随机种子

使结果可复制

3.分类器使用

sklearn.tree.DecisionTreeClassifier()
参数criterion表示特征选择准则,默认gini得到CART树,entropy得到ID3树,其他参数主要用于预剪枝

sklearn.svm.SVC(LinearSVC):分类支持向量机:核函数 径向基(线性函数);基于 libsvm(liblinear);多分类策略 一对一(一对多)

sklearn.discriminant_analysis.LinearDiscriminantAnalysis(QuadraticDiscriminantAnalysis):线性(二次)判别分析;线性(二次)决策边界

sklearn.ensemble.AdaBoostClassifier(BaggingClassifier,GradientBoostingClassifier,RandomForestClassifier):集成分类器 AdaBoost-SAMME.R(Bagging,梯度提升,随机森林);基分类器 CART树(一致,,一致);集成数 最大50(10,100,100)

sklearn.neighbors.KNeighborsClassifier:kNN,默认k值为5,欧氏距离,平均权重

sklearn.naive_bayes.GaussianNB:高斯分布朴素贝叶斯,用于连续变量,也可以分别假设为多项式分布和伯努利分布

from sklearn.neural_network. MLPClassifier:多层感知机,默认100隐藏层,relu激活函数,adam随机梯度下降

sklearn.linear_model.LogisticRegression(RidgeClassifier):线性模型 逻辑回归; 基于 lbfgs算法;多类策略 OVR

4.指标使用

sklearn.model_selection.cross_validate:返回分类器运行时间和给定指标下性能,关键参数为分类器对象,样本数据,样本目标,交叉验证形式cv,指标。cv为任意形式的train/test ndarray(默认为分层5折交叉验证),指标为返回指定字符串的列表、函数、字典等。(默认为准确率)

sklearn.model_selection.cross_val_score:只返回指标性能,其他一致

5.预处理

sklearn的分类器无法处理直接处理离散变量,如果直接使用分类器在含离散变量的数据集上进行训练,则其分类性能会直接置NaN。
常用预处理方法加以解决,包括独热编码OneHotEncoder(少数情况下,可以使用pandas.get_dummies函数)或顺序编码OrdinalEncoder
在使用前注意其参数设置,使用fit_transform()函数获取(注意返回为ndarray,所以在使用pandas.dataframe时,传入参数为data.values)
fit_transform(data.values)

from sklearn.preprocessing import OneHotEncoder,OrdinalEncoder
onehot_ec = OneHotEncoder(sparse=False, handle_unknown='ignore')

系统路径名分割os.path.split()[1]得到实际文件名.后缀名
正则表达式删除含若干空格和一个问号的字符串r'\s*\?'

6.数据填补

from sklearn.impute import SimpleImputer简单缺失值填补,默认以列均值填补np.nan

三、Pandas使用

1.遍历循环读取多个csv文件

使用pathlib包

2.dataframe

drop函数:不改变原dataframe返回删除指定索引数据的新dataframe,参数:参数 columns=[索引名] axis=0or1 (0为行索引,1为列索引)

read_csv函数:读取csv文件生成dataframe,重要参数:
header=None使用自然索引,不指定会使用第一行作为列索引;error_bad_lines=False,读取的数据格式不一致时不返回错误中断程序;delimiter='分隔符':字符串,默认为逗号,不同文件会使用空格,分号分割数据,空格应当使用'delimiter=\\s+'以避免分割空格数不一致导致的格式问题

创建空dataframe:

df = pd.DataFrame(column=[index_list])#列表

在末尾插入一行列表:

df.loc[len(df)] = [value_list_row]#列表

添加一列:
dataframe是二维数据结构,可以视为{列索引:值的列表}的字典,添加一列直接使用

df[index] = [value_list_column]#列表

numpy的argsort函数返回索引后倒序

x = np.array([3, 1, 2])
ascending = np.argsort(x)
descending = ascending[::-1]
 类似资料: