python数据科学实战

本文介绍了如何使用Pandas的read_csv函数读取CSV文件,包括设置分隔符和header,以及如何进行数据划分。同时,讲解了value_counts的normalize参数、Matplotlib显示中文和Wordcloud生成词云图的方法。
摘要由CSDN通过智能技术生成

pandas,csv读取数据指定分隔符

如果您想用pandas读取csv文件,并指定分隔符,您可以使用read_csv()函数,并用sep或delimiter参数来设置分隔符。⁴

例如,如果您的csv文件是用逗号分隔的,您可以这样写:

import pandas as pd
df = pd.read_csv('data.csv', sep=',')

如果您的csv文件是用其他字符分隔的,比如分号、竖线或冒号,您可以用相应的字符替换逗号。³

例如,如果您的csv文件是用竖线分隔的,您可以这样写:

import pandas as pd
df = pd.read_csv('data.csv', sep='|')

如果您的csv文件是用多个字符分隔的,比如空格、分号、斜杠、冒号或制表符等,您可以用方括号把这些字符包起来,并指定engine='python’参数。¹⁵

例如,如果您的csv文件是用空格、分号、斜杠、冒号或制表符中的任意一个分隔的,您可以这样写:

import pandas as pd
df = pd.read_csv('data.csv', sep='[ ;/:\t]', engine='python')

希望这些信息对您有帮助。

csv指定header是怎么做,比如我原来的csv文件没有header,指定header名称为[‘input’,‘out’]?

如果您想用pandas读取csv文件,并指定header,您可以使用read_csv()函数,并用header或names参数来设置header。

例如,如果您的csv文件没有header,而您想指定header名称为[‘input’,‘out’],您可以这样写:

import pandas as pd
df = pd.read_csv('data.csv', header=None, names=['input','out'])

如果您的csv文件有header,但是您想忽略它,并用自己的header名称替换它,您可以这样写:

import pandas as pd
df = pd.read_csv('data.csv', header=0, names=['input','out'])

test_data[‘intent’].value_counts(normalize=True) normalize=True是什么意思?

如果您想用pandas的value_counts()函数对Series或DataFrame中的值进行计数,并返回一个包含唯一值计数的Series,您可以使用normalize参数来设置是否返回比例而不是频数。

例如,如果您的test_data是一个DataFrame,而intent是其中的一列,您可以这样写:

test_data['intent'].value_counts(normalize=True)

这样会返回一个Series,其中每个唯一值的比例是它在test_data[‘intent’]中出现的次数除以总行数。

matplotlib画图如何显示中文?
你好,这是Bing。😊

Matplotlib是Python的绘图库,可以与NumPy一起使用,绘制各种类型的图形。

要在Matplotlib中显示中文,有几种方法:

  • 一种方法是设置字体参数,指定一个支持中文的字体文件⁴⁵⁶。例如:
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置中文显示
plt.plot([1,2,3],[4,5,6])
plt.title('标题')
plt.show()
  • 另一种方法是使用matplotlib.font_manager模块,动态加载一个支持中文的字体文件。例如:
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r"C:\Windows\Fonts\simsun.ttc", size=14) # 加载一个中文字体文件
plt.plot([1,2,3],[4,5,6])
plt.title('标题', fontproperties=font) # 使用字体参数指定字体
plt.show()

你可以根据自己的需求和喜好选择合适的方法。

wordcloud显示中文
你好,这是Bing。😊

Wordcloud是Python的词云库,可以根据文本的词频生成词云图¹²³。

要在Wordcloud中显示中文,也需要设置一个支持中文的字体文件¹²⁴⁵。例如:

from wordcloud import WordCloud
text = "你好 世界 你好 Python 你好 Wordcloud"
wc = WordCloud(font_path="C:\Windows\Fonts\simsun.ttc") # 设置字体文件路径
wc.generate(text)
wc.to_file("wordcloud.png") # 保存图片

你可以尝试不同的字体文件,看哪个效果最好。

字体下载地址:https://www.wfonts.com/font/simsun#google_vignette

数据源是:‘https://mirror.coggle.club/dataset/coggle-competition/intent-recognition-train.csv’ 请将数据用pandas读入后划分为训练集和测试集,比例为8:2

要用pandas读取csv文件,你可以使用pd.read_csv函数¹²³⁴⁵。例如:

import pandas as pd
data = pd.read_csv("https://mirror.coggle.club/dataset/coggle-competition/intent-recognition-train.csv")

要将数据划分为训练集和测试集,比例为8:2,你可以使用sklearn库的train_test_split函数⁶。例如:

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(data["text"], data["intent"], test_size=0.2)

这样就可以得到训练集和测试集的文本和标签。

/home/kewei/miniconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py:228:
FutureWarning: Unlike other reduction functions (e.g. skew,
kurtosis), the default behavior of mode typically preserves the
axis it acts along. In SciPy 1.11.0, this behavior will change: the
default value of keepdims will become False, the axis over which
the statistic is taken will be eliminated, and the value None will no
longer be accepted. Set keepdims to True or False to avoid this
warning. mode, _ = stats.mode(_y[neigh_ind, k], axis=1)这是什么报错?

这不是一个报错,而是一个警告(FutureWarning)。它的意思是,你使用的scipy库中的mode函数¹²³在未来的版本(1.11.0)中会有一些行为上的变化,比如默认的keepdims参数会变成False,axis参数会被去掉,None值也不会被接受等。

这个警告是为了提醒你,在未来的版本中,如果你还想保持现在的结果,你需要显式地设置keepdims参数为True或False¹。例如:

mode, _ = stats.mode(_y[neigh_ind, k], axis=1, keepdims=True)

或者

mode, _ = stats.mode(_y[neigh_ind, k], axis=1, keepdims=False)

这样就可以避免这个警告。

/home/kewei/miniconda3/lib/python3.9/site-packages/sklearn/linear_model/_logistic.py:814: ConvergenceWarning: lbfgs failed to converge (status=1):
STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.
Increase the number of iterations (max_iter) or scale the data as shown in:
https://scikit-learn.org/stable/modules/preprocessing.html
Please also refer to the documentation for alternative solver options:
https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression
n_iter_i = _check_optimize_result(

这个警告的意思是你使用的逻辑回归模型没有收敛,也就是说没有找到最优的参数¹²。可能的原因有以下几种¹³:

  • 数据没有归一化或标准化
  • 迭代次数(max_iter)太少
  • 学习率(tol)太大或太小
  • 数据特征过多或过少

请问你是否对数据进行了预处理呢?你可以尝试调整上述参数,看看是否能解决问题。

C这个参数有取值范围么?

你好,这是Bing。很高兴为你提供帮助。😊

根据我的搜索结果,C这个参数必须是一个正数¹²³,但没有固定的取值范围²。一般来说,C的值可以从很小(如0.001)到很大(如1000)之间尝试²。你可以使用网格搜索(GridSearchCV)或随机搜索(RandomizedSearchCV)等方法来寻找最优的C值²。

请问你还有其他问题吗?
你好,这是Bing。很高兴为你提供帮助。😊

根据我的搜索结果,网格搜索(GridSearchCV)和随机搜索(RandomizedSearchCV)都是sklearn提供的用于寻找最优超参数的方法¹²³。它们都可以通过“fit”和“predict”等方法来训练和预测模型¹²。

网格搜索的原理是遍历给定的参数网格中的所有可能组合³,而随机搜索的原理是从给定的参数分布中随机抽取一定数量的候选组合¹³。随机搜索相比网格搜索可以节省计算时间,并且有时候可以找到更好的结果³。

要使用网格搜索或随机搜索,你需要先定义一个参数字典或分布,然后传入你想要优化的模型和评估指标¹²³。例如,如果你想要对逻辑回归模型进行随机搜索,你可以这样写:

from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import RandomizedSearchCV

# 定义一个参数分布
param_distributions = {'C': np.logspace(-4, 4, 10)}

# 创建一个逻辑回归模型
log_reg = LogisticRegression()

# 创建一个随机搜索对象
random_search = RandomizedSearchCV(log_reg, param_distributions=param_distributions,
                                   n_iter=5, scoring='accuracy', cv=5)

# 对训练数据进行拟合
random_search.fit(X_train, y_train)

# 对测试数据进行预测
y_pred = random_search.predict(X_test)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

irrationality

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值