问题陈述
通过声音和语音分析进行性别识别--这是一个数据集,最初是为了根据声音和语音的声学特性,将声音识别为男性或女性。该数据集由3,168个录制的语音样本组成,收集自男性和女性说话者。语音样本在R中使用seewave和tuneR软件包进行声学分析预处理,分析的频率范围为0hz-280hz(人声范围)。
Aim - 将给定的数据集分成训练和验证数据集,在训练数据上建立一个分类器,并在验证数据集上验证其性能。
链接:https://pan.baidu.com/s/14Ae1T_mHcbhsSSeP4M5EtQ?pwd=6688
提取码:6688
导入库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import re
import random
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import BernoulliNB, GaussianNB
from sklearn.neighbors import KNeighborsClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.neural_network import MLPClassifier
import sklearn.metrics
import sklearn.model_selection
导入数据
dataframe = pd.read_csv("voice.csv")
dataframe.head()
dataframe.count()
数据框架属性
每个声音的以下声学特性被测量并包括在数据集中:
- meanfreq: 平均频率(以千赫计)
- sd: 频率的标准差
- median: 中值频率(单位:kHz)
- Q25: 第一个四分位数(以千赫计)
- Q75: 三分位数(kHz)
- IQR: 梯度间范围
- skew: 偏度(见specprop描述中的注)。
- kurt: 峰度(见specprop描述中的注)。
- sp.ent: 谱系熵
- sfm: 光谱平坦度
- mode: 模式频率
- centroid: 频率中心点(见specprop)。
- peakf: 峰值频率(能量最高的频率)
- meanfun: 整个声学信号中测得的基本频率的平均值
- minfun: 在声学信号中测得的最小基频
- maxfun: 在声学信号中测得的最大基频
- meandom: 整个声学信号中测得的主导频率的平均值
- mindom: 在整个声学信号中测得的主导频率的最小值
- maxdom: 在整个声学信号中测得的主导频率的最大值
- dfrange: 在整个声学信号中测量的主导频率范围
- modindx: 调制指数。计算方法是相邻的基频测量值之间的累积绝对差值除以频率范围
- label: 男性或女性
dataframe.describe().T
dataframe.isnull().sum()
幸运的是,我们的数据框架中没有空值。
数据预处理
在这一节中,我们的目的是
- 对目标变量进行标签编码。
- 洗涤