https://github.com/openai/gpt-2/tree/master
---
~~~
import os
os.environ['TF_ENABLE_ONEDNN_OPTS'] = '0'
import tensorflow as tf
from tensorflow.keras.models import load_model, Model
from tensorflow.keras.layers import Input, Dense, Dropout
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler, LabelEncoder
import numpy as np
import pandas as pd
# 创建有意义的中文数据
data = {
'用户询问': [
'我想查询一下我的账单',
'我的网络连接有问题',
'你们的服务时间是什么时候',
'为什么我的账单金额这么高',
'如何解决我的账户登录问题'
],
'问题类型': ['账单问题', '技术问题', '一般问题', '账单问题', '技术问题']
}
# 创建 DataFrame
df = pd.DataFrame(data)
# 将问题类型转换为分类编码
df['问题类型'] = pd.Categorical(df['问题类型']).codes
# 特征提取: 将用户询问转换为特征向量(例如使用词袋模型)
from sklearn.feature_extraction.text import CountVectorizer
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(df['用户询问']).toarray()
# 标签
y = tf.keras.utils.to_categorical(df['问题类型'])
# 标准化特征
scaler = StandardScaler()
X = scaler.fit_transform(X)
# 分割数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
class CustomerServiceBot:
def __init__(self):
self.models = {}
self.scaler = StandardScaler()
def add_model(self, model_name, input_shape, output_units):
inputs = Input(shape=(input_shape,))
x = Dense(64, activation='relu')(inputs)
x = Dropout(0.3)(x)
x = Dense(32, activation='relu')(x)
x = Dropout(0.3)(x)
outputs = Dense(output_units, activation='softmax')(x)
model = Model(inputs=inputs, outputs=outputs)
model.compile(optimizer=tf.keras.optimizers.Adam(), loss='categorical_crossentropy', metrics=['accuracy'])
self.models[model_name] = model
def train_model(self, model_name, X_train, y_train, epochs=50, batch_size=32, validation_split=0.2):
if model_name in self.models:
X_train = self.scaler.fit_transform(X_train)
self.models[model_name].fit(X_train, y_train, epochs=epochs, batch_size=batch_size, validation_split=validation_split, verbose=1)
else:
print(f"Model {model_name} not found.")
def evaluate_model(self, model_name, X_test, y_test):
if model_name in self.models:
X_test = self.scaler.transform(X_test)
loss, accuracy = self.models[model_name].evaluate(X_test, y_test, verbose=0)
print(f"Test Accuracy of {model_name}: {accuracy:.2f}")
else:
print(f"Model {model_name} not found.")
def predict(self, model_name, sample_data):
if model_name in self.models:
sample_data_scaled = self.scaler.transform(sample_data)
prediction = self.models[model_name].predict(sample_data_scaled)
return prediction
else:
print(f"Model {model_name} not found.")
return None
# 实例化客户服务机器人
bot = CustomerServiceBot()
# 添加文本分类模型
bot.add_model("text_classification", input_shape=X_train.shape[1], output_units=y_train.shape[1])
# 训练文本分类模型
bot.train_model("text_classification", X_train, y_train)
# 评估文本分类模型
bot.evaluate_model("text_classification", X_test, y_test)
# 示例预测
sample_data = vectorizer.transform(['请问如何查询账单']).toarray()
prediction = bot.predict("text_classification", sample_data)
print(f"Predicted class probabilities: {prediction}")
# 保存模型
for model_name, model in bot.models.items():
model.save(f"{model_name}_model.h5")
~~~
---
~~~
import os
os.environ['TF_ENABLE_ONEDNN_OPTS'] = '0'
import tensorflow as tf
from tensorflow.keras.models import load_model, Model
from tensorflow.keras.layers import Input, Dense, Dropout
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
import numpy as np
import pandas as pd
"""
python.exe -m pip install -i https://mirrors.aliyun.com/pypi/simple --upgrade pip
pip install tensorflow -i https://mirrors.aliyun.com/pypi/simple
"""
# 加载数据并进行预处理
data = pd.read_csv("stock_data.csv") # 替换为你的数据文件路径
features = ['open', 'close', 'volume', 'high', 'low']
target = 'change_percentage'
data['label'] = (data[target] > 0).astype(int)
X = data[features].values
y = data['label'].values
scaler = StandardScaler()
X = scaler.fit_transform(X)
"""
X: 特征矩阵,通常是一个二维数组或 DataFrame,包含模型的输入特征。
y: 标签数组,通常是一维数组或 Series,包含模型的目标变量。
test_size: 测试集的比例。0.2 表示将 20% 的数据用作测试集,剩下的 80% 用作训练集。
random_state: 随机种子,确保每次运行都会产生相同的分割结果。42 是一个常见的选择,但可以是任何整数。
"""
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
model_path = "stock_prediction_model.h5"
# 检查模型是否存在
if os.path.exists(model_path):
print("加载已存在的模型...")
model = load_model(model_path)
# 新建一个优化器实例
optimizer = tf.keras.optimizers.Adam()
model.compile(optimizer=optimizer, loss='binary_crossentropy', metrics=['accuracy'])
else:
print("创建新模型...")
# 使用 Functional API 构建模型
inputs = Input(shape=(X_train.shape[1],))
x = Dense(64, activation='relu')(inputs)
x = Dropout(0.3)(x)
x = Dense(32, activation='relu')(x)
x = Dropout(0.3)(x)
outputs = Dense(1, activation='sigmoid')(x)
model = Model(inputs=inputs, outputs=outputs)
optimizer = tf.keras.optimizers.Adam()
model.compile(optimizer=optimizer, loss='binary_crossentropy', metrics=['accuracy'])
# 训练模型
history = model.fit(X_train, y_train, epochs=50, batch_size=32, validation_split=0.2, verbose=1)
# 评估模型
loss, accuracy = model.evaluate(X_test, y_test, verbose=0)
print(f"Test Accuracy: {accuracy:.2f}")
# 模型预测
sample_data = np.array([[150, 155, 300000, 157, 149]]) # 替换为实际数据
sample_data_scaled = scaler.transform(sample_data)
buy_probability = model.predict(sample_data_scaled)[0, 0]
print(f"Predicted Probability of Increase: {buy_probability:.2f}")
# 保存模型
model.save(model_path)
~~~
- 草稿
- Golang
- 切片 slice
- 数组和切片的区别
- 左闭右开
- make([]int, 5) 和 make([]int, 0, 5) 区别
- 切片非线程安全,并发操作为啥不会像map一样报错
- []struct{} 如何遍历
- 切片如何删除某个元素
- append 一个nil 切片
- 哈希表 map
- 并发操作
- 并发写报错
- 并发读不会报错
- 并发读有写报错
- 并发迭代有写报错
- 自制并发安全字典
- 官方并发安全字典
- 对未初始化的 map 进行赋值操作
- map的底层
- 无序输出
- 等量扩容
- 实现集合
- map的key可以使哪些值
- 协程 go
- 协程相关阅读
- 进程、线程、协程
- 协程 (捕获异常 和 协程池)
- GPM 模型
- CSP模型
- channel
- channel 相关操作
- 交替打印
- 如何让channel 只能接收/只能发送
- channel 常见报错
- channel 死锁
- nil channel 和 已关闭的 channel
- 使用 select 来多路复用 channel
- channel 的使用
- 接口和结构体
- 简单使用
- 两个结构体能否比较
- 工厂模式
- 概念
- 简单工厂
- 方法工厂
- 堆和栈,值类型和引用类型,内存逃逸,垃圾回收
- 栈和堆
- 内存逃逸
- 值类型和引用类型
- 垃圾回收方式
- 性能优化分析工具 pprof
- golang 代码片段
- 片段一 defer
- 片段二 channel
- Golang 相关
- Golang 相关阅读
- Golang 1-10
- make 和 new 的区别
- 使用指针的场景
- Go语言的context包
- 位运算
- Copy 是浅拷贝还是深拷贝
- init 函数 和 sync.Once
- select 多路复用
- Golang 其它
- MongoDB
- 可比较类型 与 可转json 类型
- Gorm
- 面向对象和面向过程
- go语言实现-面向对象
- go语言实现-面向过程
- 限流,熔断,降级
- 了解
- 熔断配置
- 熔断例子
- 服务降级
- github.com/alibaba/sentinel-golang
- 互斥锁 读写锁 原子锁
- 为什么需要锁
- 互斥锁
- 读写锁
- 原子锁
- 互斥锁性能对比
- 原子锁性能对比
- 互斥锁 or 原子锁?
- 条件锁
- 计数器
- GoFrame
- GF1.16版本
- 修改使用的表
- 按天、周、月、年
- GoFrame 文档
- 配置文件
- 生成脚本
- 排序算法
- 相关排序
- 冒泡排序
- 选择排序
- 插入排序
- 快速排序
- 归并排序
- 堆排序
- 数据库
- 分布式怎么保证线程安全
- 数据库实现方式
- 基于表记录
- 乐观锁
- 悲观锁
- Redis实现方式
- Zookeeper实现方式
- Mysql 相关
- group_concat
- 索引优化
- 索引优化1
- 定期分析和优化索引
- 覆盖索引
- 组合索引
- 聚簇索引和非聚簇索引
- 索引类型与方式、聚簇与非聚簇索引
- 事务特征和隔离级别
- 查询优化
- mysql自增表插入数据时,Id不连续问题
- InnoDB引擎 和 MyISAM引擎区别
- 锁
- 悲观锁和乐观锁
- 查询,更新,插入语句
- 什么是死锁
- 怎么处理死锁
- MySQL 隔离级别
- 事务特征
- 隔离级别
- 废弃3
- 索引
- 索引类型和方式、聚簇和非聚簇索引(上)
- 索引类型和方式、聚簇和非聚簇索引(下)
- 回表、覆盖索引、最左前缀、联合索引、索引下推、索引合并
- Mysql 优化
- 索引的原理
- 千万级表修改表结构
- Redis
- 获取随机三条数据
- Redis 持久化方式
- 全量模式 RDB 冷备份(内存快照)
- 增量模式 AOF 热备份(文件追加)
- 过期key的删除策略、内存淘汰机制
- 数据结构
- 位图
- 网络
- 网络相关
- 游戏同步方式:帧同步和状态同步
- Websocket
- OSI模型
- TCP 与 UDP
- 三次握手四次挥手
- Http 状态码
- 1xx(信息性状态码)
- 101 服务端代码
- 101 客户端代码
- 2xx(成功状态码)
- 3xx(重定向状态码)
- 302 服务端代码
- 302 客户端代码
- 4xx(客户端错误状态码)
- 5xx(服务器错误状态码)
- 如何排查接口问题
- 网络请求和响应过程
- time_wait
- keep-alive
- http 和 rpc 的区别
- I/O多路复用 select和poll
- too many open file
- 其它技术
- git 相关操作
- 修改提交备注
- 多个提交合并成一个提交
- 回退版本
- 小程序和公众号
- 消息模板
- 获取code
- 静默登录
- 其它技术相关
- C盘空间不足
- 生成式人工智能AIGC
- 共享文件
- 接口文档, mock提供测试数据
- 抓包工具
- Python
- 安装包失败
- 自动化测试 Scrapy
- AIGC:人工智能生成内容
- ai
- PHP
- xhprof 性能分析
- 一键安装
- 哈希冲突的解决方式
- 链地址法(拉链法)
- 开放地址法
- 再哈希
- 概念1
- Nginx
- 负载均衡方式
- 加密解密
- 简单了解
- 签名算法例子
- 码例子1
- 代码例子2
- Linux
- netstat (用于查看和管理网络连接和路由表)
- ps 用于查看和管理进程
- ab 压测
- nohup 守护进程
- lsof (List Open File 获取被进程打开文件的信息)
- tail 查看日志
- 各类linux同步机制
- Socket 服务端的实现,select 和epoll的区别?
- scp 传输,awk 是一个强大的文本分析工具
- pidof
- 项目
- 棋牌
- 牌的编码
- 出牌规则
- 洗牌
- 股票
- 股票知识
- 龙虎榜数据缓存方式
- 单日龙虎榜数据
- 单只股票的历史上榜
- 遇到的问题
- 浮点数精度问题
- Mysql Sum 精度问题(float, double精度问题)
- 分页问题(数据重复)
- 工具包
- v3
- common.go
- common_test.go
- customized.go
- customized_test.go
- slice.go
- slice_test.go
- time.go
- time_test.go
- v4
- common.go
- common_test.go
- customized.go
- customized_test.go
- slice.go
- time.go
- time_test.go
- 相关阅读
- 协程 goroutine
- 通道 channel
- json 和 gob 序列化和反序列化
- redis 有序集合
- mysql22
- 相关阅读 s
- pyTorch
- defer
- 内存泄漏
- 数据传输
- 杂项
- 一提
- gogogoo
- 内容
- 其它
- 僵尸进程
